繁体   English   中英

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

[英]pytest - run each test in a separate process

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

使用@ pytest.mark.order

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

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

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

另一种选择是使用固定装置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM