Как запустить все модульные тесты Python в каталоге?Python

Программы на Python
Anonymous
Как запустить все модульные тесты Python в каталоге?

Сообщение Anonymous »

У меня есть каталог, содержащий мои модульные тесты Python. Каждый модуль модульного теста имеет форму test_*.py. Я пытаюсь создать файл с именем all_test.py, который, как вы уже догадались, будет запускать все файлы в вышеупомянутой тестовой форме и возвращать результат. До сих пор я пробовал два метода; оба потерпели неудачу. Я покажу два метода и надеюсь, что кто-нибудь знает, как это сделать правильно.

Во время моей первой отважной попытки я подумал: «Если я просто импортирую все свои тестовые модули в файл, а затем вызову эту штуку unittest.main(), она сработает, верно?» Что ж, оказывается, я ошибался.

Код: Выделить всё

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



----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Кажется, у меня есть какой-то набор, и я могу выполнить результат. Меня немного беспокоит тот факт, что там написано, что у меня есть только run=1, кажется, должно быть run=2, но это прогресс. Но как мне передать и отобразить результат в main? Или как мне заставить его работать, чтобы я мог просто запустить этот файл и при этом запустить все модульные тесты в этом каталоге?

Вернуться в «Python»