能否使用Nose并发运行同一测试多次?

10 投票
2 回答
2957 浏览
提问于 2025-04-16 06:29

可以使用nose来同时运行一个测试吗?也就是说,能不能在多个进程中同时运行这个测试,并把结果汇总成一个通过/失败的结果?

我们需要同时多次运行同一个测试,以确保资源锁定没有受到影响。如果nose做不到这个,有没有什么特定的测试或设计模式可以用来实现这个需求?

2 个回答

11

这看起来是你想在测试定义中实现的功能,因为你想对结果的汇总进行验证。我建议你看看如何在测试中使用 multiprocessing。你可以创建一个池来并行执行你的代码。你还可以使用 Queue 来汇总结果。

9

你可以使用 nose 来同时运行测试:

通过使用 nose.plugin.multiprocess 插件,你可以让测试在多个工作进程中同时进行。这样做可以加快那些需要大量计算的测试速度,但主要对那些大部分时间都在等待数据的输入输出(IO)测试更有帮助,因为它们可以通过并行处理来提高效率。

我已经调整了这个插件,让它可以像你想要的那样并行运行单个测试。你可以从 http://paste.pocoo.org/show/319470/ 下载,并保存为 nose/plugins/repeat.py。然后,在 nose/plugins/builtin.py 文件中,添加这一行 ('nose.plugins.repeat', 'RepeatMultiProcess'),builtins 中。调用方式如下:

c:\python27\python nose-1.0.0\selftest.py --repeat-processes=2 --repeat-times=3 test2.py

注意:setup/teardown 的支持可能会有问题。如果有问题,修复方法很简单,具体可以查看注释。

撰写回答