Python Glossary English

все 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Сообщить о неточности