六、Pytest自动化测试框架 — Pytest预期失败

2023-11-13

###文章内容有配套的 学习视频和笔记都放在了文章末尾###

Pytest预期失败需要使用@pytest.mark.xfail()标记。

1、@pytest.mark.xfail()标记的作用:

期望测试用例是失败的,但是会运行此测试用例,并且也不会影响其他测试用例的的执行。(即xfail标记并不会影响用例的运行)
如果预期失败的测试用例执行失败的则结果是xfail(不会额外显示出错误信息)
如果测试用例执行成功的则结果是xpass
在报告中会将这些用例列在“预期失败XFAIL或意外传递XPASS部分。

2、应用场景:

  1. 你期望测试由于某种原因失败。
    如:用例功能不完善,或者用例执行一直失败。
  2. 对尚未实现的功能进行测试时。
  3. 尚未修复的错误进行测试时。

3、语法参数说明

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

  • condition: 如果满足条件则标记用例执行失败, 默认为True
    说明:condition表示预期结果,然后用例实际执行的结果,与预期结果对比,会出现4种测试结果状态。
    failedpassedxfailedxpassed
    提示:condition可以等于True或者False,也可以等于一个表达式,如:condition=1>2等。
  • reason:说明用例标记为预期失败的原因, 默认为None。(必填)
  • raises=None:在raises参数中指定单个异常或异常组,表明期望用例抛出这些异常。
    如果用例失败不是因为这些异常,那用例会被标记为failed
    如果测试用例失败的异常与raises参数标识的异常一致,则标记为xfailed
@pytest.mark.xfail(raises=AssertionError)
def test_03():
    assert 3 == 4

@pytest.mark.xfail(raises=ValueError)
def test_04():
    if isinstance('1234', int) is False:
        raise TypeError("传入参数非整数")

一般很少这样用,会使用pytest.raises先抛出接口异常,再断言异常信息是否符合预期。

  • run:标识是否执行此用例, 若为True则执行,若为False则用例不执行用例,直接标记该用力为XFAIL,(防止在xfail死循环。)
    默认为True,执行此测试用例。
  • strictstrict默认为False。当strict=True时,如果测试用例被标识为xpass,则把该用例标识为失败fail
    我们也可以不修改strict属性值,在全局配置文件pytest.ini中添加一行配置:xfail_strict=true即可,作用是一样的。

4、示例:

"""
1.学习目标
    了解预期失败方法
2.操作步骤
    2.1 xfail(condition,reason)
        condition:当condition条件为真,用例标记失败
        reason: 原因

3.使用xfail标识用例可能出现的情况:
    条件     用例执行结果   测试结果
    True     False          FAILED
    True     True           PASSED
    False    False          XFAIL
    False    True           XPASS

"""
# 1.导入pytest
import pytest


# 2.编写测试用例
# 预期失败,结果失败
@pytest.mark.xfail(True, reason="该功能尚未完成")
def test_case_1():
    print("预期失败,结果失败")
    pytest.xfail()
    assert False


# 预期失败,结果成功
@pytest.mark.xfail(True, reason="该功能尚未计划")
def test_case_2():
    print("预期失败,结果成功")
    assert True


# 预期成功,结果失败
@pytest.mark.xfail(False, reason="")
def test_case_3():
    print("预期成功,结果失败")
    assert False


# 预期成功,结果成功
@pytest.mark.xfail(False, reason="")
def test_case_4():
    print("预期成功,结果成功")
    assert True


if __name__ == '__main__':
    pytest.main()

"""
运行结果:
test_01.py::test_case_1 预期失败,结果失败
XFAIL
test_01.py::test_case_2 预期失败,结果成功
XPASS (该功能尚未计划)
test_01.py::test_case_3 预期成功,结果失败
FAILED
test_01.py::test_case_4 预期成功,结果成功
PASSED

============== 1 failed, 1 passed, 1 xfailed, 1 xpassed in 0.09s ==============


说明:
x(小写x)预期失败,结果失败   1 xfailed(预期失败)
X(大写X)预期失败,结果成功   1 xpassed(预期成功)
F预期成功,结果失败   1 failed
.预期成功,结果成功   1 passed
在测试执行过程中,会将xpassed状态的用例直接转成failed状态
"""

5、忽略xfail标识

执行命令:pytest --runxfail,也就是--runxfail参数可以将全部@pytest.mark.xfail()标识忽略掉。

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

六、Pytest自动化测试框架 — Pytest预期失败 的相关文章

随机推荐

  • js实现图片预加载

    什么是预加载 当页面打开图片提前加载 而且缓存在用户本地 需要用届时直接进行烘托 在浏览图片较多的网页 百度图库 淘宝京东等 能够有更好的用户体会 一张图片的预加载 var img new Image img addEventListene
  • pandas 导入excel_小白学 Python 数据分析(7):Pandas (六)数据导入

    人生苦短 我用 Python 前文传送门 小白学 Python 数据分析 1 数据分析基础 小白学 Python 数据分析 2 Pandas 一 概述 小白学 Python 数据分析 3 Pandas 二 数据结构 Series 小白学 P
  • echarts 生成的canvas只有100px的问题

    在开发中遇到一个问题 使用echarts的时候 生成的canvas宽度不是实际写入的宽度 后面发现 因为使用了el tabs 存在echarts的tab页在刚开始处于display none 所以echarts拿不到页面的宽度 解决办法 在
  • Burp suite ——爆破账户密码(含爆破token防爆破)

    此文章仅供交流学习使用 目录 爆破普通账户密码 设置环境 处理burp suite的抓包数据 开始爆破 爆破token防爆破账户密码 设置环境 处理抓包数据 开始爆破 爆破普通账户密码 设置环境 1 打开火狐访问此网站 更改代理 火狐浏览器
  • 【RocketMQ】消息重试、重试次数设置、死信队列

    文章目录 1 死信队列 1 1 死信特性 1 2 查看死信消息 2 重试次数参数 2 1 Producer端重试 2 2 Consumer端重试 3 1 异常重试 3 2 超时重试 参考 1 死信队列 上一篇 RocketMQ 消息重试中我
  • OpenCL并行编程基础 第六章 OpenCL事件和队列

    任务队列允许程序员通过编辑直接创建 管理和调度任务 队列中的命令按提交命令的顺序执行 队列中的吓一跳命令必须等待当前命令执行完后才能开始执行 不同命令队列的先后执行顺序得不到保证 6 1 命令 命令队列和事件 命令队列保证FIFO 启动顺序
  • The selected directory is not a valid home for Go SDK

    在GoLand中配置GOROOT的时候 出现该错误 The selected directory is not a valid home for Go SDK Go的版本是1 4 2 GoLand 版本是2021 1 3 可能是版本问题 更
  • 自媒体如何使用ChatGPT提高效率

    文章目录 自媒体公司如何充分利用ChatGPT提高效率 自媒体公司使用ChatGPT提高效率的具体案例 训练ChatGPT 让它更懂你 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地
  • agg函数加入进度条

    在panda之中 我们经常需要使用到agg函数来将pandas之中的某几列聚合起来 from tqdm import tqdm import pandas as pd import numpy as np df pd DataFrame A
  • 【软件构造】黑盒测试与白盒测试

    文章目录 前言 一 黑盒测试 1 什么是黑盒测试 2 常见的黑盒测试技术 3 等价类划分 a 主要思想 b 有效等价类与无效等价类 c 例子 3 边界值分析 主要思想 4 错误推测法 a 定义 b 主要思想 c 常见的方法 5 因果图 二
  • FPGA和IC设计怎么选?哪个发展更好?

    很多人纠结FPGA和IC设计怎么选 其实往小了说 要看你选择的具体是哪个方向岗位 往大了说 将来你要是走更远 要成为大佬 那基本各个方向的都要有涉及的 不同方向就有不同的发展 目前在薪资上IC设计要比FPGA要高一点 但每个行业都有大佬 薪
  • TCP/IP详解 卷1:协议 学习笔记 第二十五章 SNMP:简单网络管理协议

    随着网络技术的发展 网络数量越来越多 网络中的设备来自不同厂家 如何管理这些设备变得十分重要 基于TCP IP的网络管理包含两个部分 网络管理站 也叫管理进程 manager 和被管理的网络单元 也叫被管设备 包括路由器 X终端 终端服务器
  • USB 供电问题

    原先开发的外接USB设备 每次都要先上电再插到PC上能正常显示 如果设备事先没有上电再插到电脑上然后再给设备上电 PC是无法识别这个USB设备的 之前公司的人一直认为是我固件的问题 最近开发了内置USB设备 结果同样的问题出现了 我索性看了
  • 用于缺陷检测的高分辨率图像的切片处理——工作总结

    目录 参考 背景 原理 切片 标签映射 代码 结果 切片检测结果映射回原图 LabelImg的使用 安装 运行 标注 总结 参考 1 https blog csdn net zengwubbb article details 1158004
  • JS 利用 Set 对数组中对象进行去重

    JS中怎么对一个数组进行去重 相信很多人对这个问题都已经很熟悉了 最简便的方法就是使用 Set let arr 1 2 3 3 4 5 5 console log new Set arr 1 2 3 4 5 那么如何对数组中的对象进行去重呢
  • 刷脸创新技术赋予传统零售智慧发展能力

    其中技术进步起到颠覆性的作用 传统零售商积极拥抱科技进行数字化转型升级 大数据人工智能 人脸识别数据中台等创新技术进入了应用爆发期 与零售产业深度融合 加速零售在经营管理销售 服务等方面优化升级 创新技术赋予了传统零售业智慧发展的能力 在新
  • HTML的段落中怎么样显示出标签要使用的尖括号<>?

    很简单 符号 lt 用 lt 替代 符号 gt 用 gt 替代 示例代码如下 h4 HTML中怎样打出尖括号 h4 p 左尖括号 lt p p 右尖括号 gt p p p 运行效果如下
  • DVWA-xss全等级教程

    low等级 反射型 reflected 在输入框随便输入一串字符 跟踪字符发现其出现在 pre 标签中 于是可以通过自建标签方式进行弹框 这里输入来实现弹框 当然还能输入 img src xx 也可以通过输入 pre
  • Pycharm + anaconda 安装第三方库总是提醒安装失败或者安装包后import失败

    原因 1 pycharm 新建项目后 随项目建立的虚拟环境没有被激活 2 如果用pip安装 有可能是pip没有更形 3 用anaconda安装 有可能是anaconda没有更新 4 第三方库的所在位置不是pycharm项目对应虚拟环境的未知
  • 六、Pytest自动化测试框架 — Pytest预期失败

    文章内容有配套的 学习视频和笔记都放在了文章末尾 Pytest预期失败需要使用 pytest mark xfail 标记 1 pytest mark xfail 标记的作用 期望测试用例是失败的 但是会运行此测试用例 并且也不会影响其他测试