pytest入门到放弃11--xfail以xpass标记预期会失败的用例及参数详解

xfail 函数文档如下:

    def xfail(self,condition=None, reason=None, raises=None, run=True, strict=False):
        """mark the the test function as an expected failure if eval(self,condition)
        has a True value.  # 将eval(self,condition)为真的测试函数标记为失败。

        Optionally specify a reason for better reporting and run=False if
        you don't even want to execute the test function.  # 不想执行某个测试功能,可以指定 run=False,可以自定义错误原因 reason=‘’

        See http://doc.pytest.org/en/latest/skipping.html  # 官方文档说明
        """

参数:

  condition  在特定条件下标记为xfail

  reason  预期失败的原因

  raises  具体原因,python标准错误类型

  run=False  直接标记为xfail,且不执行,防止在xfail死循环

  strict=True  会使产生了 xpass 的用例,标记为测试失败(默认False会标记通过)

  

xfail 作用:

  1)xfail意味着你期望测试由于某种原因失败。常见的示例是对尚未实现的功能或尚未修复的错误进行测试。

  2)当预期失败时(标记为pytest.mark.xfail),但实际测试通过,标记为xpass,并将在测试摘要中报告

  3)xfail 使用 pytest.mark.xfail 来标记预期会失败的用例,用 x 标记代替 F,且无错误信息输出

  4)通过 -r 显示 xfail、skip 详细信息   pytest -r

   5)忽略xfail(pytest.xfail 不生效):

pytest --runxfail

 

使用 xfail:

@pytest.mark.parametrize('a, b, c', [(4, 2, 2), (0, 2, 0), pytest.param(1, 0, 0, marks=pytest.mark.xfail), (6, 8, 0)], ids=['整除', '被除数为0', '除数为0', '非整除'])
def test_1(a, b, c):
    res = division(a, b)
    assert res == c

执行结果(用 x 标记了 F):

E:\personal\python38\python.exe E:/personal/GitWorkSpace/pytest_basic/main.py
test_demo_10.py::test_1[整除]
test_demo_10.py::test_1[被除数为0]
test_demo_10.py::test_1[除数为0]
test_demo_10.py::test_1[非整除]
..x.
3 passed, 1 xfailed in 0.14s

 

你可能感兴趣的:(pytest入门到放弃11--xfail以xpass标记预期会失败的用例及参数详解)