rut:一个跳过未受影响测试的 Python Test Runner
发布: (2026年2月8日 GMT+8 13:05)
2 分钟阅读
原文: Dev.to
Source: Dev.to
为什么要使用另一个测试运行器?
pytest-incremental 需要 pytest。它的插件单独使用都很棒,但将多个插件组合成一致的体验很困难——它们会相互冲突,配置变得脆弱,调试交互也很痛苦。
代码库的规模已经增长了好几个数量级,AI 辅助的工作流进一步加速了这一趋势。我们需要新的测试基础设施来跟上步伐。并行化有帮助,但快速反馈仍然是王道——跳过不需要运行的测试比加快运行速度更有效。
入门指南
pip install rut
# 运行所有测试并构建依赖图
rut
# 只运行受最近更改影响的测试
rut --changed
工作原理
rut 会分析你的导入图。如果 api.py 导入 models.py,而 models.py 又导入 utils.py,当你修改 utils.py 时,rut 知道需要运行这三个模块对应的测试。对不依赖 utils.py 的模块的测试则会被跳过。
对于结构良好的代码库,这通常意味着 增量运行时可减少 50–80 % 的测试。
了解更多:
特性
- 依赖感知的排序 – 基础测试先运行,失败更容易指向根本原因。
- 异步支持 – 内置,无需插件。
--dry-run– 查看将会运行哪些测试,而不实际执行。- 兼容 unittest – 可直接替代
python -m unittest。
试一试
pip install rut
rut