Библиотека Python, которая записывает HTTP-взаимодействия во время тестов и воспроизводит их позднее, чтобы тесты запускались офлайн и детерминированно.
pytest-dev/pytest-randomly
Плагин для pytest, который перемешивает порядок тестов и сбрасывает генераторы случайных чисел, чтобы воспроизводить сбои из-за порядка запуска или случайных данных.
- Звёзды
- 724
- Форки
- 39
- Открытые issues
- 5
- Последний коммит
- 5 дней назад
Что это?
pytest-randomly — плагин для фреймворка тестирования Python pytest. По умолчанию он перемешивает тесты сначала на уровне модулей, затем классов и отдельных функций. Это помогает обнаружить скрытые зависимости между тестами.
При каждом запуске тестов выводится базовое случайное значение seed. Его можно передать через --randomly-seed (или указать last), чтобы повторить тот же порядок тестов и те же данные. Перед выполнением каждого этапа теста — setup, run и teardown — плагин сбрасывает глобальное значение seed в Python на основе базового seed и ID теста. Благодаря этому тесты, использующие случайные данные, можно запускать повторно с теми же результатами. Плагин также сбрасывает состояние генераторов случайных чисел в factory boy, Faker, Model Bakery, устаревшем генераторе NumPy и Polyfactory.
Оба поведения можно отключить флагами. Кроме того, плагин поддерживает пользовательские генераторы случайных чисел через точку входа pytest_randomly.random_seeder. Он совместим с pytest-xdist.
Ключевые возможности
- 01Перемешивает порядок тестов на уровне модулей, классов и функций
- 02Принимает seed через --randomly-seed; значение 'last' позволяет повторно использовать предыдущий seed
- 03Сбрасывает seed перед каждым этапом теста: setup, run и teardown
- 04Сбрасывает состояние генераторов случайных чисел в factory boy, Faker, Model Bakery, NumPy и Polyfactory
- 05Поддерживает пользовательские генераторы случайных чисел через точку входа
- 06Совместим с pytest-xdist
Сценарии использования
- Поиск тестов, которые проходят только потому, что перед ними запустился другой тест
- Воспроизведение нестабильных сбоев из-за порядка тестов или случайных тестовых данных
- Написание тестов с данными, созданными фабриками, результаты которых должны оставаться воспроизводимыми
- Отладка взаимного влияния тестов: повторный запуск отдельного модуля с тем же seed
Быстрый старт
- 1
Установите плагин с помощью pip
python -m pip install pytest-randomly - 2
Запустите pytest: плагин автоматически перемешает тесты и выведет начальное значение
pytest
Что важно знать
- Требуются Python 3.11–3.15 и средство запуска тестов pytest.
В подборках
Темы
Частые вопросы
- Что такое pytest-randomly?
- Плагин для pytest, который перемешивает порядок тестов и сбрасывает генераторы случайных чисел, чтобы воспроизводить сбои из-за порядка запуска или случайных данных. pytest-randomly — плагин для фреймворка тестирования Python pytest. По умолчанию он перемешивает тесты сначала на уровне модулей, затем классов и отдельных функций. Это помогает обнаружить скрытые зависимости между тестами.
- pytest-randomly можно использовать бесплатно? Какая у него лицензия?
- pytest-randomly распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- pytest-randomly всё ещё поддерживается?
- Активно поддерживается. Последний коммит в pytest-randomly — 2 нояб. 2026 г..
- Для чего можно использовать pytest-randomly?
- Поиск тестов, которые проходят только потому, что перед ними запустился другой тест Воспроизведение нестабильных сбоев из-за порядка тестов или случайных тестовых данных Написание тестов с данными, созданными фабриками, результаты которых должны оставаться воспроизводимыми Отладка взаимного влияния тестов: повторный запуск отдельного модуля с тем же seed
- Как установить pytest-randomly?
- Установите плагин с помощью pip: python -m pip install pytest-randomly Запустите pytest: плагин автоматически перемешает тесты и выведет начальное значение: pytest
- Где скачать pytest-randomly?
- Исходный код и инструкции по установке — на GitHub: https://github.com/pytest-dev/pytest-randomly
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Плагин для pytest, который запускает тесты параллельно на нескольких CPU и позволяет циклически перезапускать падающие тесты.
Плагин для pytest, позволяющий писать тестовые функции как корутины и напрямую вызывать в них код asyncio через await.
BDD-фреймворк, который запускает feature-файлы Gherkin как тесты pytest без отдельного тестового раннера.
Плагин для pytest, который запускает только тесты, затронутые недавними изменениями кода, и поддерживает непрерывный запуск в режиме наблюдения.
Пакет Python, который отправляет результаты coverage.py в coveralls.io и публикует статистику покрытия онлайн.