все Python 3doctestфункция
doctest.testmod()
запуск тестов
Находит в докстрингах модуля примеры >>> и проверяет, что вывод совпадает с записанным. Возвращает TestResults(failed, attempted).
Синтаксис
doctest.testmod(m=None, name=None, globs=None, verbose=None, report=True, optionflags=0)
Вывод сравнивается как текст, буквально: лишний пробел, другой порядок элементов множества или адрес объекта <... at 0x7f...> — уже провал. Для изменчивых частей есть директивы # doctest: +ELLIPSIS (... совпадает с чем угодно) и +NORMALIZE_WHITESPACE. При успехе testmod() ничего не печатает — тишина и есть зелёный результат; подробности даёт verbose=True.
Примеры
import doctest
def square(x):
"""
>>> square(3)
9
>>> object() # doctest: +ELLIPSIS
<object object at 0x...>
>>> print("a b") # doctest: +NORMALIZE_WHITESPACE
a b
>>> sorted({"b", "a"})
['a', 'b']
"""
return x * x
print(doctest.testmod()) # → TestResults(failed=0, attempted=4)
import doctest
def half(x):
"""
>>> half(5)
2.5
>>> half(4)
2
"""
return x / 2
print(doctest.testmod()) # → TestResults(failed=1, attempted=2) — half(4) печатает 2.0
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности