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

Python pytest-在单独的进程中运行每个测试,python,pytest,Python,Pytest,我正在使用pytest运行一大套python测试,一些测试结果取决于测试的运行顺序。例如,如果测试B在测试A之后运行,那么它可能会由于在测试A中执行的一些影响测试B的初始化而失败。 为了避免这个问题,我希望在一个新流程中运行每个测试,但是测试仍然应该按顺序运行,而不是并行运行。 pytest有什么方法可以做到这一点吗?我建议您实现setup_method()和teardown_method(),它们可以清除您在测试中进行的初始化。通过这种方式,您可以摆脱与测试执行顺序之间的依赖关系 另一种选择是

我正在使用pytest运行一大套python测试,一些测试结果取决于测试的运行顺序。例如,如果测试B在测试A之后运行,那么它可能会由于在测试A中执行的一些影响测试B的初始化而失败。 为了避免这个问题,我希望在一个新流程中运行每个测试,但是测试仍然应该按顺序运行,而不是并行运行。
pytest有什么方法可以做到这一点吗?

我建议您实现setup_method()和teardown_method(),它们可以清除您在测试中进行的初始化。通过这种方式,您可以摆脱与测试执行顺序之间的依赖关系

另一种选择是使用夹具

但是,如果您不想并行运行测试,我不认为在新流程中启动每个测试有什么好处。尽管您仍然需要它,但您可以在setup_method()中启动一个新进程,并将当前测试附加到此进程。然后,您的teardown_方法()可以终止此进程。

使用


您能否澄清“将当前测试附加到此过程”的含义?您的意思是在teardown_方法中创建一个流程,然后更改每个测试以设置流程的目标方法并启动流程吗?
@pytest.mark.order2
def test_foo():
    assert True

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