pytest-dev/pytest-randomly
一个 pytest 插件,随机打乱测试执行顺序并重置随机种子,便于复现因顺序或随机数据引发的失败。
- Star
- 724
- Fork
- 39
- 未关闭 Issue
- 5
- 最近提交
- 5天前
这是什么?
pytest-randomly 是 Python 测试框架 pytest 的一个插件。默认情况下,它会先在模块层面、再在类层面、最后在函数层面随机打乱测试执行顺序,帮助暴露测试之间隐藏的依赖关系。
每次运行时会输出一个基础随机种子,可通过 --randomly-seed 参数(也可用 last)传入,以复现相同的执行顺序和随机数据。每个测试的 setup、运行和 teardown 前,插件都会基于该种子和测试 ID 重置 Python 全局随机种子,使依赖随机数据的测试保持可重复。它还会同步重置 factory boy、Faker、Model Bakery、NumPy 旧版随机状态以及 Polyfactory 的随机状态。
两项行为都可以通过参数关闭,插件也支持通过 pytest_randomly.random_seeder 入口点注册自定义随机数生成器,并兼容 pytest-xdist。
核心功能
- 01按模块、类和函数层级随机打乱测试顺序
- 02支持 --randomly-seed 指定种子,可用 last 复用上次的种子
- 03在每个测试的 setup、运行和 teardown 前重置随机种子
- 04同步重置 factory boy、Faker、Model Bakery、NumPy 和 Polyfactory 的随机状态
- 05通过入口点支持自定义随机数生成器
- 06兼容 pytest-xdist
适用场景
- 找出只因其他测试先执行而通过的测试
- 复现由测试顺序或随机测试数据引起的偶发失败
- 编写使用工厂生成数据、但结果必须可重复的测试
- 用同一种子只重跑单个模块,排查测试间的状态污染
快速上手
- 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 最近一次提交是在 2026年11月2日。
- pytest-randomly 适合用来做什么?
- 找出只因其他测试先执行而通过的测试 复现由测试顺序或随机测试数据引起的偶发失败 编写使用工厂生成数据、但结果必须可重复的测试 用同一种子只重跑单个模块,排查测试间的状态污染
- pytest-randomly 怎么安装和运行?
- 使用 pip 安装插件: python -m pip install pytest-randomly 运行 pytest,插件会自动打乱测试顺序并打印随机种子: pytest
- 在哪里获取 pytest-randomly?
- 源代码和安装说明在 GitHub 上:https://github.com/pytest-dev/pytest-randomly
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
将 coverage.py 的覆盖率结果上传到 coveralls.io 并在线展示的 Python 工具。
573186PythonMIT维护活跃更新于 23小时前