Mam katalog, który zawiera moje testy jednostkowe w języku Python. Każdy moduł testu jednostkowego ma formę testu _ *. Py . Próbuję utworzyć plik o nazwie all_test.py , który, jak się , uruchomi wszystkie pliki w wyżej wymienionym formularzu testowym i zwróci wynik. Do tej pory wypróbowałem dwie metody; oba zawiodły. Pokażę te dwie metody i mam nadzieję, że ktoś wie, jak to zrobić poprawnie.
Podczas mojej pierwszej dzielnej próby pomyślałem: „Jeśli po prostu zaimportuję wszystkie moje moduły testowe do pliku, a następnie unittest.main()
wywołam ten szablon, to zadziała, prawda?” Okazuje się, że się myliłem.
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()
To nie zadziałało, otrzymałem wynik:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Przy drugiej próbie pomyślałem, ok, może spróbuję wykonać całą tę testowanie w bardziej „ręczny” sposób. Więc próbowałem to zrobić poniżej:
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()
To również nie działało, ale wydaje się tak blisko!
$ 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
Wydaje mi się, że mam jakiś pakiet i mogę wykonać wynik. Jestem trochę zaniepokojony faktem, że mówi, że mam run=1
, wydaje się, że tak powinno być run=2
, ale jest to postęp. Ale jak przekazać i wyświetlić wynik jako główny? Lub w jaki sposób mogę go w zasadzie uruchomić, aby móc po prostu uruchomić ten plik, a tym samym uruchomić wszystkie testy jednostkowe w tym katalogu?