J'ai un répertoire qui contient mes tests unitaires Python. Chaque module de test unitaire est de la forme test _ *. Py . J'essaie de créer un fichier appelé all_test.py qui, vous l'aurez deviné, exécutera tous les fichiers du formulaire de test susmentionné et renverra le résultat. J'ai essayé jusqu'à présent deux méthodes; les deux ont échoué. Je vais montrer les deux méthodes, et j'espère que quelqu'un sait comment faire cela correctement.
Pour ma première vaillante tentative, je me suis dit: "Si je viens d'importer tous mes modules de test dans le fichier, puis d'appeler ce unittest.main()
doodad, cela fonctionnera, non?" Eh bien, il s'est avéré que j'avais tort.
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
if __name__ == "__main__":
unittest.main()
Cela n'a pas fonctionné, le résultat que j'ai obtenu a été:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Pour mon deuxième essai, je pense, ok, peut-être que j'essaierai de faire tout ce test d'une manière plus "manuelle". J'ai donc essayé de le faire ci-dessous:
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite
result = unittest.TestResult()
testSuite.run(result)
print result
#Ok, at this point I have a result
#How do I display it as the normal unit test command line output?
if __name__ == "__main__":
unittest.main()
Cela n'a pas fonctionné non plus, mais cela semble si proche!
$ python all_test.py
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Il me semble que j'ai une suite quelconque et je peux exécuter le résultat. Je suis un peu préoccupé par le fait qu'il dit que je n'ai que run=1
, semble que cela devrait être run=2
, mais c'est un progrès. Mais comment passer et afficher le résultat sur main? Ou comment puis-je le faire fonctionner pour que je puisse simplement exécuter ce fichier et, ce faisant, exécuter tous les tests unitaires dans ce répertoire?