У мене є каталог, який містить мої тести на модуль Python. Кожен модульний тестовий модуль має форму випробування _ *. 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
, але це прогрес. Але як я передаю і відображаю результат для основного? Або як я в основному змушую його працювати, щоб я міг просто запустити цей файл і, виконуючи це, запустити всі тести одиниць у цьому каталозі?