我们说我的测试如下所示:
import pytest
import copy
@pytest.fixture(scope='session')
def session_tool(request):
tool = request.config.tool
# Build is the critical part and may fail, raising an exception
tool.build()
return tool
@pytest.fixture
def tool(session_tool):
return copy.deepcopy(session_tool)
def test_tool(tool, args):
assert tool.run(args) == 0
它构建一个会话范围的工具,然后为每个测试用例创建一个它的副本。但是当构建失败时,session_tool
fixture再次针对下一个测试用例执行,该测试用例再次失败......直到所有测试用例都失败。由于有很多测试用例,因此需要一些时间才能完成该过程。
有没有办法告诉pytest在首次尝试构建失败后跳过所有使用session_fixture
的测试?
答案 0 :(得分:0)
我可以想到两种方法:
1)调用pytest.skip()
将导致跳过测试。如果它也在灯具内调用,则可以正常工作。在您的情况下,它将导致跳过所有剩余的测试。
2)调用pytest.exit()
将导致测试套件停止运行,就像触发了KeyboardInterrupt一样。