J'ai un certain nombre de modules et pour chacun d'entre eux, j'ai un fichier unittest
test basé sur l'évaluation des risques. Je veux définir le main dans chaque module pour exécuter ses tests, mais j'obtiens des erreurs d'importation à cause des boucles d'importation (en particulier lorsque j'utilise from mymodule import myclass
dans le test. Je pense qu'il s'agit d'un problème résolu, donc - que dois-je mettre dans le main de mon module pour exécuter le test correspondant ?
Réponse
Trop de publicités?Si je comprends bien, vous avez un fichier (appelons-le mymodule.py) qui ressemble à ceci :
import unittest
from mymoduletests import MyModuleTests
class myclass(object):
def somefunction(self, x):
return x*x
if __name__ == '__main__':
unittest.main()
et un fichier séparé (appelons-le mymoduletests.py) qui ressemble à ceci :
import unittest
from mymodule import myclass
class MyModuleTests(unittest.TestCase):
def test_somefunction(self):
m = myclass()
self.assertEqual(4, m.somefunction(2))
Si vous exécutez mymodule.py, vous obtenez le résultat suivant :
Traceback (most recent call last):
File "mymodule.py", line 2, in <module>
from mymoduletests import MyModuleTests
File "/Users/srgerg/Desktop/p/mymoduletests.py", line 2, in <module>
from mymodule import myclass
File "/Users/srgerg/Desktop/p/mymodule.py", line 2, in <module>
from mymoduletests import MyModuleTests
ImportError: cannot import name MyModuleTests
Cependant, si vous changez mymodule.py en ceci :
class myclass(object):
def somefunction(self, x):
return x*x
if __name__ == '__main__':
import unittest
from mymoduletests import MyModuleTests
unittest.main()
et de l'exécuter, vous obtenez
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Ai-je bien compris ?