分布式/更快的Python单元测试

4 投票
5 回答
1563 浏览
提问于 2025-04-15 11:20

我有很多针对一个项目的Python单元测试,现在运行这些测试花的时间越来越长。我不想再增加测试数量,因为我知道这样会让运行速度更慢。大家通常是怎么解决这个问题的呢?有没有什么简单的方法可以把测试的执行分散到多个计算机上?

5 个回答

2

先对它们进行性能分析,看看到底哪个部分运行得慢。你可能可以在不分布式的情况下解决这个问题。如果这些测试确实是单元测试的话,我觉得在多个执行引擎上运行测试应该没什么大问题。

3

可以看看py.test,它可以把单元测试分配给一组机器来执行。还有Nose(注意,这里说的是最新的开发版本,而不是目前发布的版本),它支持使用多进程模块来并行运行测试。

5

你不能经常运行所有的测试,因为它们太慢了。这是项目变大的必然结果,无法避免。没错,你可以尝试并行运行测试,这样可以加快速度,但这个问题迟早会再次出现,而且永远不会像项目刚开始时那么快。

为了提高工作效率,你需要能够快速编码,并在几秒钟内运行相关的单元测试并得到结果。如果你有测试的层级结构,你就可以有效地做到这一点:经常运行你正在开发的模块的测试,偶尔运行你正在处理的组件的测试,而项目整体的测试则不常运行(也许在你准备提交代码之前)。你可能还有集成测试或完整系统测试,可以选择在晚上运行:这个策略就是在这个思路基础上扩展的。

要实现这一点,你只需要组织好你的代码和测试,以支持这种层级结构。

撰写回答