pytest简易教程(21):标记为预期失败 - xfail
pytest简易教程汇总,详见
功能未开发完成,但是用例写了; 环境限制,已经知道会失败,也可以预期失败。 方法:xfail(condition=None, reason=None, raises=None, run=True, strict=False) 常用参数: reason:失败的原因 run:布尔值,是否运行 raises:抛出某类型异常,和用例中raise的异常类型一样,结果就是FAILED,否则结果是XFAIL strict,默认是False,strict=False,断言成功结果是XPASS,断言失败结果是XFAIL;strict=True,断言成功结果是FAILED,断言失败结果是XFAIL 示例一:assert成功 结果:X表示预期失败 示例二:assert失败 结果: 示例三:condition为true 结果: 示例四:condition为false 结果: 示例: 结果:pytest.xfail后面代码没执行 结果: 结果: 默认是True run=False不会执行方法 结果: raises:抛出某类型异常,和用例中raise的异常类型一样,结果就是FAILED,否则结果是XFAIL 结果: strict默认是False,strict=False,断言成功结果是XPASS,断言失败结果是XFAIL;strict=True,断言成功结果是FAILED,断言失败结果是XFAIL 结果: 应用场景
源码
class _XfailMarkDecorator(MarkDecorator):
@overload # type: ignore[override,misc,no-overload-impl]
def __call__(self, arg: Markable) -> Markable:
...
@overload
def __call__(
self,
condition: Union[str, bool] = ...,
*conditions: Union[str, bool],
reason: str = ...,
run: bool = ...,
raises: Union[Type[BaseException], Tuple[Type[BaseException], ...]] = ...,
strict: bool = ...,
) -> MarkDecorator:
...
condition:预期失败的条件
使用方法:
@pytest.mark.xfail(condition, reason="xxx" )函数/方法级预期失败






函数/方法执行过程中预期失败

类级预期失败

模块级预期失败

xfail方法run参数

xfail方法raises参数
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 韧
# @wx :ren168632201
# @Blog :https://www.cnblogs.com/uncleyong/
import pytest
@pytest.mark.xfail
def test_d():
print("---test_d")
raise Exception("异常")
@pytest.mark.xfail(reason="异常了")
def test_c():
print("---test_c")
raise Exception("异常")
@pytest.mark.xfail(raises=RuntimeError)
def test_b():
print("---test_b")
raise RuntimeError("运行时异常")
@pytest.mark.xfail(raises=RuntimeError)
def test_a():
print("---test_a")
raise Exception("异常")

xfail方法strict参数

__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
加薪必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!