У меня есть каталог, содержащий мои модульные тесты Python. Каждый модуль unit test имеет форму test _ *. Py. Я пытаюсь создать файл с именем all_test.py, который, как вы догадались, запустит все файлы в вышеупомянутой тестовой форме и вернет результат. Я пробовал два метода до сих пор; оба потерпели неудачу. Я покажу два метода, и я надеюсь, что кто-то там знает, как на самом деле сделать это правильно.
Для моей первой доблестной попытки я подумал: "Если я просто импортирую все мои тестовые модули в файл, а затем позвоню в этот unittest.main()
doodad, он будет работать, верно?" Ну, оказывается, я ошибся.
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()
Это не сработало, я получил результат:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Для моей второй попытки, я, хотя, хорошо, может быть, я постараюсь сделать все это тестирование более "вручную". Поэтому я попытался сделать это ниже:
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()
Это тоже не сработало, но кажется так близко!
$ 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
Кажется, у меня есть какой-то набор, и я могу выполнить результат. Меня немного беспокоит тот факт, что он говорит, что у меня есть только run=1
, похоже, что это должно быть run=2
, но это прогресс. Но как передать и отобразить результат на главную? Или как я в основном его работаю, поэтому я могу просто запустить этот файл, и при этом запустите все модульные тесты в этом каталоге?