【问题标题】:Is it possible to use Nose to run one test multiple times, concurrently?是否可以同时使用 Nose 多次运行一项测试?
【发布时间】:2010-11-03 14:55:45
【问题描述】:

是否可以使用nose 同时运行单个测试(跨多个进程)并将结果汇​​总为单个通过/失败结果?

我们需要同时多次运行相同的测试,以确保资源锁定不受影响。如果鼻子不能做到这一点,是否有特定的测试/设计模式可以遵循来实现这一点?

【问题讨论】:

  • 所以是的,可以同时运行一个测试。你能更详细地描述聚合成一个通过/失败吗?您想在同一个套件中将单个测试标记为“运行多次”而将其他测试标记为“运行一次”吗?如果是这样应该很容易。

标签: python unit-testing nose


【解决方案1】:

这似乎是您在测试定义本身中想要的东西,因为您想对结果的聚合进行断言。我会看看在测试中使用multiprocessing。创建一个池以并行执行您的代码。您可以使用Queue 来汇总结果。

【讨论】:

    【解决方案2】:

    可以run tests concurrently with nose:

    使用nose.plugin.multiprocess 插件,您可以并行化测试运行 跨越可配置数量的工人 过程。虽然这可以加快 CPU-bound 测试运行,主要是 对于花费大量的 IO-bound 测试很有用 他们大部分时间都在等待数据 从其他地方到达并且可以 受益于并行化。

    我已调整插件以根据需要并行运行单个测试。从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
    

    注意:设置/拆卸支持可能会被破坏。如果是这样,修复很简单,请参阅行中的注释

    【讨论】:

    • 你误会了——我需要同时运行一个单一的测试多次。
    • 我没有误会,那是“跨多个进程”运行的内置方式。我正在尝试弄清楚如何使用它来并行运行相同的测试。
    • 确实我的 hack 工作,但不知何故,一个测试似乎总是只运行一次。调试中...
    • 您的两个原始源链接现在都已损坏。你能把原始代码放在github上的gist上吗?
    猜你喜欢
    • 2015-10-26
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2012-09-12
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多