pytest测试框架(五)---使用xfail将用例标记为失败
一、简介
当因为一个确切的原因,我们知道这个用例会执行失败,比如用例所覆盖的功能还未实现,或者这个功能存在阻塞性的已知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将用例标记为失败相关推荐
- python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制
一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...
- Pytest测试框架(五):pytest + allure生成测试报告
系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...
- Pytest测试框架(二):pytest 的setup/teardown方法
系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...
- Python编程必不可少的pytest测试框架
进行编程测试重要的是为了更高效的完成功能的实现. pytest是基于unittest实现的第三方测试框架,比 unittest 更加的简洁.高效,并且可以完美兼容 unittest 的测试代码,无需对 ...
- Pytest 测试框架——数据驱动
引言 前面已经和大家介绍过 Unittest 测试框架的数据驱动框架 DDT,以及其实现原理.今天和大家分享的是 Pytest 测试框架的数据驱动,Pytest 测试框架的数据驱动是由 pytest ...
- pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest
本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...
- Pytest测试框架的基本使用和allure测试报告
一.测试用例的识别与运行 目录识别 通过pytest.ini配置文件配置 如果未指定任何参数,则收集从testpaths(如已配置)或当前目录开始.另外,命令行参数可以在目录.文件名或节点ID的任何组 ...
- pytest测试框架——allure报告
文章目录 一.allure的介绍 二.allure的运行方式 三.allure报告的生成 方式一.在线报告.会直接打开默认浏览器展示当前报告 方式二.静态资源文件报告(带index.html.css. ...
- pytest测试框架4-插件与hook函数
一.简介 pytest的自带功能很强大,通过添加插件可以扩展功能,pytest的代码结构适合定制和扩展插件, 可以借助hook函数来实现. 把fixture函数或者hook函数添加到conftest文 ...
最新文章
- SqlServer 自动化分区方案
- MONO源码编译笔记-版本:unity-2018.4-mbe
- redis实战之使用redis实现排行榜
- mysql no listenter_为什么mysql中用\G表示按列方式显示
- python 的csr_python的高级数组之稀疏矩阵
- 1-26HashSet简介
- 23种设计模式之桥梁模式
- sshclientCRT连接linux使用技巧
- java获取异常信息_Python中获取异常(Exception)信息
- 使用wireshark对HTTPS解密
- MATLAB-马尔可夫链(马氏链)模型
- idea Lombok插件下载
- 固态硬盘与机械硬盘读取速度实测
- 利用天翎知识文档+群晖NAS搭建企业知识库,享用智能检索
- LNB电源市场现状及未来发展趋势分析
- 解决 VS 无法打开包括文件: “XXX.h”: No such file or directory问题
- 移动硬盘如何分区?分区软件推荐:
- postgresql设置自动更新时间方法
- matlab实现logit模型/逻辑回归(详细版)
- 电脑设置自动关机和取消自动关机代码bat桌面程序
热门文章
- list怎么取数据_MongoDB 自动过滤重复数据
- 中软国际2020年业绩再创新高 归母净利同比增长26.5%
- NetScaler SDWAN 的前世今生
- VCSA 6.7 U3部署(vCenter Server Appliance(VCSA)6.7 U3部署指南)
- VCAP6 – DCV DESIGN COLLECTION
- App后台开发运维和架构实践学习总结(10)——基于Java-JWT前后端token认证实战使用详解
- Java基础学习总结(32)——Java项目命名规范
- html 滚动条处于页面底部,滚动条一直置于页面底部,开发聊天程序须知。
- 四、shell编程练习题(1-20)
- XML序列之System.Xml.Serialization