Python Nosetest多处理在类/包级别启用和禁用

时间:2016-02-11 15:30:13

标签: python multiprocessing automated-tests nose

所以我有一个带有Acceptance Tests子目录的目录。 我的大多数测试都没有相互依赖,期望一个套件。 有没有办法告诉鼻子到达这个类时顺序执行测试。一旦它命中下一个类,再次启用多处理? 这与此测试套件中的灯具无关,它们根本无法同时运行。他们正在执行API,这会影响同时运行的其他测试。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我会使用nose attribute插件来装饰需要显式禁用多处理的测试并运行两个鼻子命令:一个启用多处理,不包括敏感测试,另一个禁用多处理,包括仅敏感测试。您将不得不依赖CI框架应该结合测试结果。类似的东西:

from unittest import TestCase
from nose.plugins.attrib import attr

@attr('sequential')
class MySequentialTestCase(TestCase):
    def test_in_seq_1(self):
        pass
    def test_in_seq_2(self):
        pass

class MyMultiprocessingTestCase(TestCase):
    def test_in_parallel_1(self):
        pass
    def test_in_parallel_2(self):
        pass

然后运行它:

> nosetests -a '!sequential' --processes=10
test_in_parallel_1 (ms_test.MyMultiprocessingTestCase) ... ok
test_in_parallel_2 (ms_test.MyMultiprocessingTestCase) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.071s

OK
> nosetests -a sequential
test_in_seq_1 (ms_test.MySequentialTestCase) ... ok
test_in_seq_2 (ms_test.MySequentialTestCase) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK