【发布时间】:2018-07-06 06:25:33
【问题描述】:
我正在使用 pytest 运行大量 python 测试,一些测试结果取决于测试的运行顺序。例如,如果测试 B 在测试 A 之后运行,那么它可能会由于测试 A 中完成的一些影响测试 B 的初始化而失败。 为了规避这个问题,我想在一个新进程中运行每个测试,但测试仍应按顺序运行,而不是并行运行。 有没有办法用 pytest 做到这一点?
【问题讨论】:
我正在使用 pytest 运行大量 python 测试,一些测试结果取决于测试的运行顺序。例如,如果测试 B 在测试 A 之后运行,那么它可能会由于测试 A 中完成的一些影响测试 B 的初始化而失败。 为了规避这个问题,我想在一个新进程中运行每个测试,但测试仍应按顺序运行,而不是并行运行。 有没有办法用 pytest 做到这一点?
【问题讨论】:
@pytest.mark.order2
def test_foo():
assert True
@pytest.mark.order1
def test_bar():
assert True
【讨论】:
我建议您实现 setup_method() 和 teardown_method() 可以清理您在测试中所做的初始化。通过这种方式,您可以摆脱对测试执行顺序的依赖。
另一种选择是使用固定装置。
但如果您不想并行运行测试,我看不出在新进程中启动每个测试的优势。尽管如果您仍然需要它,您可以在 setup_method() 中启动一个新进程并将当前测试附加到此进程。然后您的 teardown_method() 可以终止此进程。
【讨论】: