Python se moquer de Patch os.environ et valeur de retour
Tests unitaires conn() à l'aide de maquette:
app.py
import mysql.connector
import os,urlparse
def conn():
if 'DATABASE_URL' in os.environ:
url=urlparse(os.environ['DATABASE_URL'])
g.db = mysql.connector.connect(user=url.username,password=url.password, host=url.hostname,database=url.path[1:])
else mysql.connector.error.Errors as err:
return "Error
test.py
def test_conn(self):
with patch(app.mysql.connector) as mock_mysql:
with patch(app.os.environ) as mock_environ
con()
mock_mysql.connect.assert_callled_with("credentials")
Erreur: Affirmation mock_mysql.connect.assert_called_with
n'est pas appelé.
qui, je crois, c'est parce que "Database_url" n'est pas dans mon corrigé os.environ et en raison de cet appel d'essai n'est pas fait pour mysql_mock.connectez.
Questions:
1 quels sont les changements que je dois faire pour faire ce test de code de travail?
2.Dois-je également patch 'urlparse'?
OriginalL'auteur immrsteel | 2015-07-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer de cette façon.Appelez simplement
conn
avec undummy
argument.Ou
Si vous ne voulez pas modifier ur fonction d'origine, essayez ceci:
Merci beaucoup,j'ai accepté la réponse et upvote la réponse quand je l'aurais 15 réputation.
ur le bienvenue 🙂
OriginalL'auteur vks
Vous pouvez également utiliser quelque chose comme la
modified_environ
gestionnaire de contexte de décrire dans ce question pour définir/restaurer les variables d'environnement.OriginalL'auteur Laurent LAPORTE
Pour cela, je trouve que pytest de monkeypatch luminaire conduit à un code de meilleure qualité lorsque vous avez besoin de définir des variables d'environnement:
OriginalL'auteur Toote