J'utilise la bibliothèque mock python (python 2.7, mock == 1.0.1) et lorsque je moque certaines parties du code que je suis en train de tester, c'est en avalant des exceptions pour une raison quelconque.Python mock avale des exceptions
Voici un exemple:
#test.py
from django import test
from something import main_func
class TestCase(test.TestCase):
@mock.patch('something.somewhere')
def test_something(mock_somewhere):
main_func()
#something.py
def somewhere(param):
print param
def main_func():
somewhere(None.missing_something)
Alors AttributeError
devrait être soulevée à droite? Ce test passe sur ma machine, en réalité le code est plus compliqué, un modèle Django est supposé être sauvegardé et existant. Le test échoue car le modèle n'existe pas.
Si j'insère un import ipdb; ipdb.set_trace()
juste avant somewhere(None.missing_method)
alors je peux voir que AttributeException
est élevé mais il n'apparaît pas dans le test.
Des idées?
par curiosité ... fait votre fichier de test unitaire a une ligne 'if __name__ == '__main__': unittest.main()' à la fin? – mgilson
Hirondelles à jeun? – jonrsharpe
Veuillez corriger votre code qui ne peut pas être exécuté: il y a trop d'erreur pour comprendre où est la cause. J'ai corrigé le parent de la classe de test '(unittest.TestCase)' et les arguments de test par 'self, mock_somewhere' et il déclenche une exception comme prévu. Quoi qu'il en soit, si vous voyez l'exception dans le débogueur mais que le test ne l'attrape pas, je suppose que vous avez plus de threads et que l'exception n'est pas dans votre thread de test mais dans un autre. –