2 votes

Exécution des tests unitaires à partir du module testé

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 ?

4voto

srgerg Points 8142

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 ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X