Плагин для pytest, который запускает тесты параллельно на нескольких CPU и позволяет циклически перезапускать падающие тесты.
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
Установите xdoctest из PyPI
pip install xdoctest - 2
Запустите все doctest-тесты в пакете или модуле
python -m xdoctest /path/to/your/pkg-or-module.py
Что важно знать
- Требуется Python версии 3.8 или новее.
В подборках
Темы
Частые вопросы
- Что такое 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, позволяющий писать тестовые функции как корутины и напрямую вызывать в них код asyncio через await.
BDD-фреймворк, который запускает feature-файлы Gherkin как тесты pytest без отдельного тестового раннера.
Библиотека Python, которая записывает HTTP-взаимодействия во время тестов и воспроизводит их позднее, чтобы тесты запускались офлайн и детерминированно.
Плагин для pytest, который запускает только тесты, затронутые недавними изменениями кода, и поддерживает непрерывный запуск в режиме наблюдения.
Плагин для pytest, который перемешивает порядок тестов и сбрасывает генераторы случайных чисел, чтобы воспроизводить сбои из-за порядка запуска или случайных данных.