Repolode
pytest-dev

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. 1

    Установите плагин с помощью pip

    python -m pip install pytest-randomly
  2. 2

    Запустите pytest: плагин автоматически перемешает тесты и выведет начальное значение

    pytest

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

  • Требуются Python 3.11–3.15 и средство запуска тестов pytest.

В подборках

Темы

#pytest#testing#python#test-ordering#random-seed#test-isolation

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

Что такое 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, который запускает только тесты, затронутые недавними изменениями кода, и поддерживает непрерывный запуск в режиме наблюдения.

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