Repolode
Erotemic

Erotemic/xdoctest

Python-пакет, который находит и запускает примеры кода в docstring, заменяя встроенный модуль doctest парсером на основе AST.

Звёзды
221
Форки
18
Открытые issues
29
Последний коммит
позавчера

Что это?

Xdoctest выполняет doctest — примеры кода, записанные в docstring Python. Это переработанная версия стандартного модуля doctest: вместо парсера на регулярных выражениях используется парсер на основе модуля Python ast. Благодаря этому каждую строку примера можно начинать с одинакового префикса >>>, а многострочные строки не требуют специальных префиксов.

Запустить его можно из командной строки, указав путь к модулю или пакету для xdoctest, либо через pytest, включив флаг --xdoctest. Встроенный runner умеет показывать список doctest, запускать их все или выполнять doctest одной указанной функции; также можно запускать функции без аргументов по имени. Парсер поддерживает блоки Example в стиле Google и свободный формат блоков >>>.

По умолчанию проверка got/want допускает некоторые различия: игнорирует пробелы, использует сопоставление ELLIPSIS и считает проверку пройденной, если совпадает либо выведенный текст, либо итоговое значение. Для тестов без want достаточно завершиться без ошибок, поэтому для проверок подойдут обычные assert.

Ключевые возможности

  • 01Разбирает doctest с помощью модуля Python ast, а не регулярных выражений.
  • 02Позволяет начинать каждую строку с >>>, не разделяя строки PS1 и PS2.
  • 03Интегрируется с pytest через флаг --xdoctest.
  • 04Предоставляет встроенный runner командной строки, который умеет показывать список doctest, запускать их все или выполнять один выбранный тест.
  • 05Поддерживает разбор doctest в стиле Google и в свободном формате.

Сценарии использования

  • Хранить исполняемые примеры использования в docstring и запускать их в CI вместе с модульными тестами.
  • Проверять, что примеры из документации Python-пакета продолжают работать после изменений в коде.
  • Быстро записывать демонстрационные входные данные в docstring во время разработки функции.

Быстрый старт

  1. 1

    Установите xdoctest из PyPI

    pip install xdoctest
  2. 2

    Запустите все doctest-тесты в пакете или модуле

    python -m xdoctest /path/to/your/pkg-or-module.py

Что важно знать

  • Требуется Python версии 3.8 или новее.

В подборках

Темы

#python#doctest#testing#pytest#docstrings#pytest-plugin

Частые вопросы

Что такое xdoctest?
Python-пакет, который находит и запускает примеры кода в docstring, заменяя встроенный модуль doctest парсером на основе AST. Xdoctest выполняет doctest — примеры кода, записанные в docstring Python. Это переработанная версия стандартного модуля doctest: вместо парсера на регулярных выражениях используется парсер на основе модуля Python ast. Благодаря этому каждую строку примера можно начинать с одинакового префикса >>>, а многострочные строки не требуют специальных префиксов.
xdoctest можно использовать бесплатно? Какая у него лицензия?
xdoctest распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
xdoctest всё ещё поддерживается?
Активно поддерживается. Последний коммит в xdoctest — 4 нояб. 2026 г..
Для чего можно использовать xdoctest?
Хранить исполняемые примеры использования в docstring и запускать их в CI вместе с модульными тестами. Проверять, что примеры из документации Python-пакета продолжают работать после изменений в коде. Быстро записывать демонстрационные входные данные в docstring во время разработки функции.
Как установить xdoctest?
Установите xdoctest из PyPI: pip install xdoctest Запустите все doctest-тесты в пакете или модуле: python -m xdoctest /path/to/your/pkg-or-module.py
Где скачать xdoctest?
Исходный код и инструкции по установке — на GitHub: https://github.com/Erotemic/xdoctest

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Плагин для pytest, который запускает только тесты, затронутые недавними изменениями кода, и поддерживает непрерывный запуск в режиме наблюдения.

1 тыс.+2 за неделю86PythonMITАктивно поддерживаетсяОбновлён 4 дня назад

Плагин для pytest, который перемешивает порядок тестов и сбрасывает генераторы случайных чисел, чтобы воспроизводить сбои из-за порядка запуска или случайных данных.

724+1 за неделю39PythonMITАктивно поддерживаетсяОбновлён 3 дня назад