Python鼻子测试来自生成器并不同时运行

时间:2013-05-04 21:10:08

标签: python nose

鉴于以下内容:

from time import sleep

def runTest(a):
    sleep(1)
    assert a >= 0

def test_all():
    for i in range(5):
        yield (runTest, i)

我希望这五个测试能够与nosetests --processes=8并行运行并因此在大约一秒钟内运行 - 然而,运行只需要五秒钟:它们似乎是顺序运行而不是同时运行。

根据鼻子文档,多进程插件支持测试生成器(因为鼻子文档调用它们),因为1.1:我使用的是鼻子1.3.0所以应该支持它。正如人们所预料的那样,添加_multiprocess_can_split_ = True会产生任何不同,因为没有使用灯具。

如何让这五个测试同时运行?

2 个答案:

答案 0 :(得分:3)

根据鼻子的作者on the mailing list,多进程插件不能与1.3(a known bug)中的生成器一起使用,如果需要它可以工作,他建议坚持使用1.1。

答案 1 :(得分:2)

您可以尝试

from time import sleep
from multiprocessing import Process

def runTest(a):
    sleep(1)
    assert a >= 0

def test_all():
    for i in range(5):
        Process(target=(yield (runTest, i))).start()