【问题标题】:pytest - run each test in a separate processpytest - 在单独的进程中运行每个测试
【发布时间】:2018-07-06 06:25:33
【问题描述】:

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

【问题讨论】:

标签: python pytest


【解决方案1】:

使用@pytest.mark.order

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

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

【讨论】:

    【解决方案2】:

    我建议您实现 setup_method() 和 teardown_method() 可以清理您在测试中所做的初始化。通过这种方式,您可以摆脱对测试执行顺序的依赖。

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

    但如果您不想并行运行测试,我看不出在新进程中启动每个测试的优势。尽管如果您仍然需要它,您可以在 setup_method() 中启动一个新进程并将当前测试附加到此进程。然后您的 teardown_method() 可以终止此进程。

    【讨论】:

    • 您能否阐明“将当前测试附加到此过程”的意思?你的意思是在teardown_method中创建一个进程,然后更改每个测试设置该进程的目标方法并启动该进程吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-18
    • 2015-07-09
    • 2011-02-22
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多