一、简介

当因为一个确切的原因,我们知道这个用例会执行失败,比如用例所覆盖的功能还未实现,或者这个功能存在阻塞性的已知Bug时,就可以使用xfail将其标记起来。

二、xfail的使用方法

1、@pytest.mark.xfail装饰器

可以使用@pytest.mark.xfail标记用例,表示期望这个用例执行失败。标记后的用例会正常执行,只是失败时不再显示堆栈信息,最终的结果有两个:用例执行失败时(XFAIL:符合预期的失败)、用例执行成功时(XPASS:不符合预期的成功)

pytest.mark.xfail(condition=None, *, reason=None, raises=None, run=True, strict=False)

  • condition位置参数,默认值为None,表示只有满足条件时才标记用例;

  • reason关键字参数,默认值为None,表示可以指定一个reason字符串,说明标记用例的原因;

  • strict关键字参数,默认值为False

当strict=False时,如果用例执行失败,结果标记为XFAIL,表示符合预期的失败;如果用例执行成功,结果标记为XPASS,表示不符合预期的成功;

当strict=True时,如果用例执行成功,结果将标记为FAILED;

  • raises关键字参数,默认值为None

可以指定为一个异常类或者多个异常类的元组,表示我们期望用例上报指定的异常;

如果用例的失败不是因为所期望的异常导致的,pytest将会把测试结果标记为FAILED;

  • run关键字参数,默认值为True:

当run=False时,pytest不会再执行测试用例,直接将结果标记为XFAIL;

2、pytest.xfail方法

我们也可以通过pytest.xfail方法在用例执行过程中直接标记用例结果为XFAIL,并跳过剩余的部分:

def test_aaa():if not meet():pytest.xfail("failing configuration (but should work)")

3、结合@pytest.mark.parametrize装饰器使用

​import pytestimport sys@pytest.mark.parametrize(('n', 'expected'),[(2, 1),pytest.param(2, 1, marks=pytest.mark.xfail(), id='XPASS'),pytest.param(0, 1, marks=pytest.mark.xfail(raises=ZeroDivisionError), id='XFAIL'),pytest.param(1, 2, marks=pytest.mark.skip(reason='无效的参数,跳过执行')),pytest.param(1, 2, marks=pytest.mark.skipif(sys.version_info <= (3, 8), reason='请使用3.8及以上版本的python。'))])def test_bbb(n, expected):assert 2 * n == expected​

三、执行方法

pytest默认不显示xfail用例的详细信息,我们可以通过-r选项使其显示出来;

通常一个字母代表一种类型,具体的规则如下:

(f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed, (p)assed, (P)assed with output, (a)ll except passed(p/P), or (A)ll

所以,使用pytest -rxX 方式执行,能够显示结果为XFAIL和XPASS用例的详细信息。

pytest测试框架(五)---使用xfail将用例标记为失败相关推荐

  1. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

    一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...

  2. Pytest测试框架(五):pytest + allure生成测试报告

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  3. Pytest测试框架(二):pytest 的setup/teardown方法

    系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...

  4. Python编程必不可少的pytest测试框架

    进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...

  5. Pytest 测试框架——数据驱动

    引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...

  6. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  7. Pytest测试框架的基本使用和allure测试报告

    一.测试用例的识别与运行 目录识别 通过pytest.ini配置文件配置 如果未指定任何参数,则收集从testpaths(如已配置)或当前目录开始.另外,命令行参数可以在目录.文件名或节点ID的任何组 ...

  8. pytest测试框架——allure报告

    文章目录 一.allure的介绍 二.allure的运行方式 三.allure报告的生成 方式一.在线报告.会直接打开默认浏览器展示当前报告 方式二.静态资源文件报告(带index.html.css. ...

  9. pytest测试框架4-插件与hook函数

    一.简介 pytest的自带功能很强大,通过添加插件可以扩展功能,pytest的代码结构适合定制和扩展插件, 可以借助hook函数来实现. 把fixture函数或者hook函数添加到conftest文 ...

最新文章

  1. SqlServer 自动化分区方案
  2. MONO源码编译笔记-版本:unity-2018.4-mbe
  3. redis实战之使用redis实现排行榜
  4. mysql no listenter_为什么mysql中用\G表示按列方式显示
  5. python 的csr_python的高级数组之稀疏矩阵
  6. 1-26HashSet简介
  7. 23种设计模式之桥梁模式
  8. sshclientCRT连接linux使用技巧
  9. java获取异常信息_Python中获取异常(Exception)信息
  10. 使用wireshark对HTTPS解密
  11. MATLAB-马尔可夫链(马氏链)模型
  12. idea Lombok插件下载
  13. 固态硬盘与机械硬盘读取速度实测
  14. 利用天翎知识文档+群晖NAS搭建企业知识库,享用智能检索
  15. LNB电源市场现状及未来发展趋势分析
  16. 解决 VS 无法打开包括文件: “XXX.h”: No such file or directory问题
  17. 移动硬盘如何分区?分区软件推荐:
  18. postgresql设置自动更新时间方法
  19. matlab实现logit模型/逻辑回归(详细版)
  20. 电脑设置自动关机和取消自动关机代码bat桌面程序

热门文章

  1. list怎么取数据_MongoDB 自动过滤重复数据
  2. 中软国际2020年业绩再创新高 归母净利同比增长26.5%
  3. NetScaler SDWAN 的前世今生
  4. VCSA 6.7 U3部署(vCenter Server Appliance(VCSA)6.7 U3部署指南)
  5. VCAP6 – DCV DESIGN COLLECTION
  6. App后台开发运维和架构实践学习总结(10)——基于Java-JWT前后端token认证实战使用详解
  7. Java基础学习总结(32)——Java项目命名规范
  8. html 滚动条处于页面底部,滚动条一直置于页面底部,开发聊天程序须知。
  9. 四、shell编程练习题(1-20)
  10. XML序列之System.Xml.Serialization