Donc, j'ai un répertoire qui contient mon Python de test de l'unité. Chaque unité de module de test est de la forme "test_*.py". Je suis d'essayer de faire un fichier appelé "all_test.py" qui, vous l'aurez deviné, exécuter tous les fichiers précités formulaire de test et de retourner le résultat. J'ai essayé les deux méthodes de mesure, les deux ont échoué, je vais vous montrer deux méthodes, et espère que quelqu'un ici sait comment le faire correctement. Je vous remercie.
Pour ma première tentative vaillante, j'ai pensé: "Si je viens d'importer tous mes tests de modules dans le fichier, et ensuite appeler cette unittest.main() bidule, il va travailler, non?" Eh bien, s'avère faux.
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 ne fonctionne pas, le résultat de retour que j'ai eu était.
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Pour mon deuxième essai, j'ai bien, ok, peut-être que je vais essayer de le faire tout les tests de chose en plus "manuelle" de la mode. J'ai donc tenté 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 aussi n'a pas de travail, mais il 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
Semble si proche!!!! Il me semble avoir un costume, de la sorte, et je peux exécuter le résultat. Je suis un peu inquiète sur le fait qu'il dit que j'ai seulement "run=1", semble que ce devrait être "run=2", mais c'est un progrès. Mais comment puis-je transmettre et d'afficher le résultat principal? Ou comment faire essentiellement le faire fonctionner donc je ne peux il suffit d'exécuter ce fichier, et en agissant de la sorte, l'exécution de tous les tests de l'unité dans ce répertoire?