У меня есть код модульного теста Python, организованный следующим образом:
Maindir
|
|--Dir1
| |
| |-- test_A.py
| |-- test_B.py
| |-- test_C.py
|
|--Dir2
| ...
Я полагаю, вы поняли картину. В каждом из каталогов Dirx
у меня есть файл с именем suite.py
, который объединяет набор тестов из тестов в данном каталоге (так что вы можете выбрать конкретный тест, пропустить другие тесты и т. д.). Эти файлы выглядят, например. как показано ниже (в случае выбора всех тестов они также могут выбрать только подмножество тестов) [также рассмотрите тест ‹-› модульный тест]:
import test_A
import test_B
import test_C
suite1 = test.TestSuite()
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_A.MyTest))
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_B.MyTest))
suite1.addTests(test.TestLoader().loadTestsFromTestCase(test_C.MyTest))
Главный бегун, execall.py
, в каталоге Maindir
выглядит так:
from Dir1.suite import suite1
from Dir2.suite import suite2
suite_all = test.TestSuite([
suite1,
suite2])
if __name__ == '__main__':
test.main(defaultTest='suite_all')
Теперь я могу сделать следующее:
- Запустите все тесты: «execall.py» (как задокументировано)
- Запустите определенный пакет:
execall.py suite1
(как задокументировано)
Но как я могу запустить только один конкретный тест? И как я могу запустить все тесты конкретного файла? Я безуспешно пробовал следующее, с той же ошибкой: 'TestSuite' object has no attribute 'xxx'
execall.py suite1.test_A
execall.py suite1.test_A.test1
execall.py test_A
execall.py test_A.test1
execall.py -h
дает очень конкретные примеры того, как запускать одиночные тесты или тесты в тесткейсах, но в моем случае это не работает.