все Python 3unittestпонятие
unittest.TestSuite
запуск тестов
Контейнер тестов: группирует тест-кейсы и другие наборы, чтобы запустить их одним вызовом раннера или suite.run(result).
Синтаксис
suite = unittest.TestSuite()
suite.addTest(MyTests('test_x'))
suite.addTests(tests)
Набор одноразовый: после run() он отпускает пройденные тесты, и повторный suite.run() падает с TypeError: 'NoneType' object is not callable — для второго прогона набор собирают заново. Порядок — тот, в котором тесты добавлены, а не алфавитный, как у загрузчика. Именно набор вызывает setUpClass и setUpModule, поэтому одиночный тест, запущенный в обход набора, их не получит.
Примеры
import unittest
class Tests(unittest.TestCase):
def test_a(self): pass
def test_b(self): pass
suite = unittest.TestSuite()
suite.addTest(Tests('test_b'))
suite.addTest(Tests('test_a'))
print([t.id().split('.')[-1] for t in suite]) # → ['test_b', 'test_a']
print(suite.countTestCases()) # → 2
import unittest
class Tests(unittest.TestCase):
def test_a(self): pass
suite = unittest.TestSuite([Tests('test_a')])
suite.run(unittest.TestResult())
try:
suite.run(unittest.TestResult())
except TypeError as e:
print(e) # → 'NoneType' object is not callable
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности