能否使用Nose并发运行同一测试多次?
可以使用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 的支持可能会有问题。如果有问题,修复方法很简单,具体可以查看注释。