Pytest中使用pytest.exit中断用例执行

有时候我们需要在运行一批用例前对环境进行检查,如果检查不通过则不运行所有的用例。
实现的方法有3种:

  1. 使用-x参数,快速失败(遇到失败即停止运行):在第一个用例中进行检查,如果不通过则使用例失败,则后续用例不会执行。
    但是如果期望,后面的用例,失败了不影响下一条,则使用-x就不能支持。

  2. 添加一个全局的fixture,如

import pytest

@pytest.fixture(scope="session", auto_use=True):
   if ...:
       pytest.skip('环境检查不通过')

首先,conftest.py会影响到所有的用例,我们可以把这一批用例放到一个目录中,在这个目录中添加contest.py,这样是可以的。
如果脚本分布在各个目录中,则不行。

  1. 手动修改每一个模块,或用例,添加if ..: pytest.skip()@pytest.mark.skipIf(), 当用例较多时,修改成本较高

  2. 在第一个要执行的用例中使用pytest.exit()退出pytest执行,示例如下。

当然,最推荐的还是在用例编写时就规划好环境检查,当环境不满足时使用@pytest.mark.skipIf()进行跳过。

原文地址:https://www.cnblogs.com/superhin/p/15188976.html