Введение

Инструмент для тестирования программного обеспечения

doctest — это модуль, входящий в стандартную библиотеку языка программирования Python, который позволяет легко создавать тесты на основе вывода, полученного из стандартной интерактивной оболочки Python, скопированного и вставленного в строки документации (docstrings).

Грамотное программирование и доктестовые тесты

Хотя doctest не позволяет встраивать программу на Python в обычный текст, он позволяет встраивать проверяемые примеры в строки документации (docstrings), которые могут содержать и другой текст. Строки документации, в свою очередь, можно извлекать из файлов программ для создания документации в других форматах, таких как HTML или PDF. Файл программы может содержать как документацию, так и тесты, и сам код, при этом тесты легко сопоставляются с кодом для проверки. Это позволяет коду, тестам и документации развиваться согласованно.

Документация библиотек на примере

Доктесты отлично подходят для знакомства с библиотекой, демонстрируя способы использования её API. На основе вывода интерактивного интерпретатора Python можно сочетать текст с тестами, проверяющими работу библиотеки, и отображать ожидаемые результаты.

Примеры

Пример один демонстрирует, как повествовательный текст можно чередовать с проверяемыми примерами в docstring. Во втором примере показаны дополнительные возможности doctest и их описание. Пример три настроен так, чтобы запускать все doctest в файле при его непосредственном запуске, но при импорте файла как модуля тесты выполняться не будут.

Генераторы доктестовых и документационных данных

Формат EpyText в Epydoc и формат reStructuredText в Docutils поддерживают выделение блоков doctest внутри строк документации.

Реализация на других языках программирования

В C++ фреймворк doctest является максимально близкой реализацией концепции, позволяющей писать тесты непосредственно в производственном коде с минимальными накладными расходами и возможностью исключения их из исполняемого файла. ExUnit. Библиотека DocTest для Elixir реализует функциональность, аналогичную Doctest. Реализация Doctest для Haskell. Написание документационных тестов в Elm. Написание документационных тестов в Rust. Написание документационных тестов в Elixir. byexample поддерживает написание doctest для нескольких популярных языков программирования (например, Python, Ruby, Shell, JavaScript, C/C++, Java, Go, Rust) внутри Markdown, reStructuredText и других текстовых документов.