Pytest精通指南(27)钩子函数-多重校验(pytest-assume)


文章目录

      • 前言
      • 应用场景
      • 插件安装
      • 注意事项
      • 参数分析
      • assert断言示例
      • assume断言示例


请添加图片描述

前言

pytest-assumepytest的一个扩展插件,它提供了一种新的断言方式,即**“assume”**。

与常规的assert语句不同,当使用assume进行断言时,即使某个断言失败,pytest-assume也会继续执行后续的断言。

这种特性使得我们可以在一个测试函数中执行多个断言,并收集所有失败的信息,而不是在遇到第一个失败时立即停止测试。

应用场景

  • 多个相关断言:使用pytest-assume,我们可以在一个测试函数中同时进行这些断言,即使某个断言失败,也可以继续执行其他断言,从而获取更全面的测试结果。

  • 调试和日志记录pytest-assume允许我们在测试失败时收集更多关于失败原因的信息。

    由于它会继续执行后续的断言,我们可以利用这个特性来记录更多的调试信息;

    或者执行一些清理操作。这对于定位问题和修复错误非常有帮助。

  • 条件测试pytest-assume允许我们在一个测试函数中根据前面的断言结果来决定是否执行后续的测试步骤。这有助于构建更灵活和可扩展的测试用例。

插件安装

安装命令pip install pytest-assume

在这里插入图片描述

注意事项

  • 性能考虑:由于pytest-assume会继续执行后续的断言,即使前面的断言失败,这可能会导致测试运行的时间增加。
  • 可读性和维护性:过度使用pytest-assume可能会使测试代码变得难以阅读和维护。一个测试函数应该尽可能保持简洁和清晰,避免过多的断言和复杂的逻辑。
  • 错误报告:当使用pytest-assume时,错误报告可能会比使用常规的assert语句更复杂。因为可能有多个断言失败,所以你需要仔细查看错误报告来确定哪些断言失败了,以及失败的原因。

参数分析

pytest-assume的基本用法是使用assume函数来代替常规的assert语句。

assume函数的参数与assert函数类似,都接受一个表达式和一个可选的错误消息。

如果表达式的值为False,那么assume会抛出一个AssertionError异常,并附带提供的错误消息(如果有的话)。

assert断言示例

示例代码

def test_case_01():
    assert 1 == 1
    assert 1 == 2
    assert 1 == 3

执行结果

在这里插入图片描述

assume断言示例

示例代码

import pytest


@pytest.mark.filterwarnings("ignore:.*")
def test_case_01():
    pytest.assume(1 == 1, "表达式返回True断言成功,返回False断言失败")
    pytest.assume(1 == 2, "表达式返回True断言成功,返回False断言失败")
    pytest.assume(1 == 3, "表达式返回True断言成功,返回False断言失败")
    print("测试函数执行完成")

执行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/567767.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Android12】Bugreport实现原理

Bugreport实现原理 Bugreport Bugreport介绍 Android Bugreport是一个用于记录和收集 Android设备上系统信息、日志和调试信息的工具。 系统发生某些问题时,可以通过bugreport把系统当前时刻点(运行BugRepot的时刻)的系统相关的状态和信息…

深度解析:云计算的三宝——IaaS、PaaS和SaaS

4月22日,腾讯宣布旗下协作SaaS产品全面接入腾讯混元大模型,除去企业微信、腾讯会议、腾讯文档等“一门三杰”产品,腾讯乐享、腾讯电子签、腾讯问卷、腾讯云AI代码助手等协作SaaS产品也都已实现智能化升级。大模型应用落地再加速。 那么什么是…

fawawf

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

区块链钱包开发——专业区块链开发

随着区块链技术的发展,钱包开发成为了一项至关重要的任务。本文将探讨区块链钱包开发的重要性,分析当前面临的挑战,并展望未来的发展趋势。 一、区块链钱包概述 区块链钱包是一种用于存储和管理数字货币的软件工具。它为用户提供了一个安全的…

05_FreeRTOS信号量

信号量 信号量信号量简介常用信号量API函数 信号量 信号量简介 信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中&#xf…

【C语言__指针02__复习篇12】

目录 前言 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 前言 本篇主要讨论以下问题: 1. 数组名通常表示什么,有哪两种例外情况,在例外情况中…

Electron+Vue3+ElectronForge整合 - 打包时整合 -分步打包

说明 本文介绍一下 Electron Vue3 的打包整合的基本操作。实现的效果是 : 1、一个正常的Vue3项目; 2、整合加入 Electron 框架 :开发时 Electron 加载的是开发的vue项目; 3、完成打包时整合:3.1 先完成vue3项目的正常…

加州理工华人用AI颠覆数学证明!提速5倍震惊陶哲轩,80%数学步骤全自动化

加州理工团队解决了形式化研究神器Lean运行LLM推理时的核心技术挑战,可以让LLM在Lean中提出证明策略,允许人类以无缝的方式干预和修改。 Lean Copilot,让陶哲轩等众多数学家赞不绝口的这个形式化数学工具,又有超强进化了&#xf…

pytest教程-29-重复执行用例插件-pytest-repeat

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了设置用例超时时间插件pytest-timeout,本小节我们讲解一下pytest重复执行用例插件pytest-repeat。 前言 做功能测试的时候,经常会遇到某个模块不稳定,偶然会…

五款最受欢迎的上网行为管理软件

五款最受欢迎的上网行为管理软件 员工上网看视频怎么办?员工偷偷刷抖音怎么办?员工天天上招聘网,是不是有离职打算? 解决上述困扰的最好办法是使用监控软件了解员工一言一行。以下是几款推荐的上网行为管理和监控软件:…

【Linux】开关机命令和服务管理类命令

一般Linux是不会经常进行关机的,关机的正确流程是: sync->shutdown->reboot->poweroff sync: 将内存中的数据同步到硬盘中poweroff: 关闭系统,等同于shutdown -h nowreboot: 重启系统,等同于 shutdown -r nowshutdown[选项] [时间] shutdown命令常见用法: shutdown:…

二叉树的先序、中序和后序遍历,以及二叉树的高度

1、二叉树的三种遍历方式 前序遍历: 访问根节点前序遍历左子树前序遍历右子树示例:对于节点 A(左子树为 B,右子树为 C),遍历顺序为 A -> B -> C。 中序遍历: 中序遍历左子树访问根节点中…

如何在Windows服务做性能测试(CPU、磁盘、内存)

目录 前言1. 基本知识2. 参数说明 前言 由于需要做一些接口测试,测试是否有真的优化 1. 基本知识 该基本知识主要用来用到Performance Monitor,以下着重介绍下这方面的知识 性能监视器(Performance Monitor):Windo…

本地部署Docker容器可视化图形管理工具DockerUI并实现无公网IP远程访问——“cpolar内网穿透”

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

Unity的旋转实现一些方法总结(案例:通过输入,玩家进行旋转移动)

目录 1. Transform.Rotate 方法 使用 2. Transform.rotation 或 Transform.localRotation 属性与四元数 使用方式: 小案例 :目标旋转角度计算:targetRotation(Quaternion类型) 玩家发现敌人位置,玩家…

八股中的记录

1. protected修饰符:同包或子类(不同包) 区分普通人和专业人调用的一些方法 2. 抽象:abstract修饰类和方法 抽象类不可实例化,避免错误的new对象 抽象方法是用abstract修饰的方法声明,没有方法体&#xff…

半导体存储器整理

半导体存储器用来存储大量的二值数据,它是计算机等大型数字系统中不可缺少的组成部分。按照集成度划分,半导体存储器属于大规模集成电路。 目前半导体存储器可以分为两大类: 只读存储器(ROM,Read Only Memory&#xff…

MySQL连接失败

最近接手了公司的一个软件项目,通过打印日志,发现该软件会偶发出现连接MySQL数据库失败的问题。 首先排查是否是网络问题导致的连接失败。对该软件和MySQL的3306端口进行抓包,发现连接数据库失败时并没有出现tcp三次握手失败的情况。并且该软…

semaphore信号量使用+原理分析

1.概述 Semaphore 信号量,相当于一个计数器,通常用来限制线程的数量。 每个线程操作前会先获取一个许可证,逻辑处理完成之后就归还这个许可证。 通俗的解释:相当于一个停车场,有10个停车位,进来一个车&am…

按照以下步骤使用Transformer模型

“Transformer”是一种深度学习模型架构,用于处理序列数据,特别是在自然语言处理(NLP)领域中表现出色。它由Google Brain团队于2017年提出,并在机器翻译任务中取得了突破性的成果。Transformer的核心思想是完全基于自注…