J'utilise la bibliothèque Python MiniMock pour les tests unitaires. Je voudrais simuler une fonction définie dans le même fichier Python que mon doctest. MiniMock peut-il gérer cela? L'approche naïve échoue:Le MiniMock de Python peut-il créer une simulation de fonctions définies dans le même fichier?
def foo():
raise ValueError, "Don't call me during testing!"
def bar():
"""
Returns twice the value of foo()
>>> from minimock import mock
>>> mock('foo',returns=5)
>>> bar()
Called foo()
10
"""
return foo() * 2
if __name__ == "__main__":
import doctest
doctest.testmod()
est ici ce qui se passe si je tente d'exécuter ce code:
**********************************************************************
File "test.py", line 9, in __main__.bar
Failed example:
bar()
Exception raised:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/doctest.py", line 1212, in __run
compileflags, 1) in test.globs
File "<doctest __main__.bar[2]>", line 1, in <module>
bar()
File "test.py", line 13, in bar
return foo() * 2
File "test.py", line 2, in foo
raise ValueError, "Don't call me!"
ValueError: Don't call me!
**********************************************************************
1 items had failures:
1 of 3 in __main__.bar
***Test Failed*** 1 failures.
Edit: Selon les réponses ci-dessous, ce qui a été identifié comme un bug, et a été fixed in MiniMock.
J'ai appliqué le correctif pour donner un pourboire (voir http://bitbucket.org/jab/minimock/changeset/bb9528bb454d/) . – user161642