pytest-在单独的过程中运行每个测试

时间:2018-07-05 08:57:58

标签: python pytest

我正在使用pytest运行大量的python测试,某些测试结果取决于测试的运行顺序。例如,如果测试B在测试A之后运行,则由于在测试A中完成的一些初始化会影响测试B,因此测试B可能会失败。 为了解决这个问题,我想在一个新的过程中运行每个测试,但是测试应该仍然顺序运行,而不是并行运行。 有没有办法用pytest做到这一点?

2 个答案:

答案 0 :(得分:1)

使用@pytest.mark.order

@pytest.mark.order2
def test_foo():
    assert True

@pytest.mark.order1
def test_bar():
    assert True

答案 1 :(得分:0)

我建议您实现setup_method()和teardown_method()来清理您在测试中所做的初始化。这样,您就可以摆脱测试执行顺序所具有的依赖性。

另一种选择是使用灯具。

但是,如果您不想并行运行测试,那么我看不到在新进程中启动每个测试的好处。尽管仍然需要,但是您可以在setup_method()中启动一个新进程,并将当前测试附加到该进程。然后,您的teardown_method()可以终止该过程。