все Python 3doctestпонятие
doctest.DebugRunner
отладка
Вариант DocTestRunner, который на первом провале не пишет отчёт, а бросает исключение — для отладки post-mortem.
Синтаксис
doctest.DebugRunner(checker=None, verbose=None, optionflags=0).run(test)
Неверный вывод даёт DocTestFailure, исключение внутри примера — UnexpectedException; остальные примеры уже не выполняются. Пространство имён после провала не очищается, так что в отладчике видны переменные. Именно его использует метод debug() у доктестов из DocTestSuite.
Примеры
import doctest
test = doctest.DocTestParser().get_doctest(">>> x = 1\n>>> x + 1\n3\n>>> x\n1\n", {}, "t", None, 0)
try:
doctest.DebugRunner(verbose=False).run(test)
except doctest.DocTestFailure as e:
print(e.example.source.strip(), "->", e.got.strip()) # → x + 1 -> 2
print(e.test.globs["x"]) # → 1 — пространство имён не очищено
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности