все Python 3unittestпонятие
unittest.TextTestResult
запуск тестов
Подкласс TestResult, который по ходу прогона печатает в поток точки, буквы F/E/s или строки «... ok» — его использует TextTestRunner.
Синтаксис
class MyResult(unittest.TextTestResult): ...
unittest.TextTestRunner(resultclass=MyResult)
Сам его почти не создают: подкласс передают раннеру через resultclass, чтобы поменять вывод или собрать свою статистику, переопределив addSuccess, addFailure и прочие, — не забывая вызвать super(), иначе тест пропадёт из итогов. Объём печати задаёт verbosity: 0 — молча, 1 — точки, 2 — строка на тест. До Python 2.7 и в 3.0–3.1 класс назывался _TextTestResult.
Примеры
import sys
import unittest
class Counting(unittest.TextTestResult):
passed = 0
def addSuccess(self, test):
super().addSuccess(test)
Counting.passed += 1
class Tests(unittest.TestCase):
def test_a(self): pass
def test_b(self): pass
runner = unittest.TextTestRunner(stream=sys.stdout, verbosity=0, resultclass=Counting)
result = runner.run(unittest.TestLoader().loadTestsFromTestCase(Tests))
print(type(result).__name__, Counting.passed) # → Counting 2
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности