3 pytest Fixture

news2024/9/19 7:30:09

目录

  • 3.1 通过 conftest.py 共享 fixture
  • 3.2 使用 fixture 执行配置及销毁逻辑
  • 3.3 使用 --setup-show 回溯 fixture 的执行过程
  • 3.4 使用 fixture 传递测试数据
  • 3.5 使用多个 fixture
  • 3.6 指定 fixture 作用范围
  • 3.7 使用 usefixtures 指定 fixture
  • 3.8 为常用 fixture 添加 autouse 选项
  • 3.9 为 fixture 重命名
  • 3.10 Fixture 的参数化
  • 3.11 参数化 Tasks 项目中的 fixture

fixture 是在测试函数运行前后,由 pytest 执行的外壳函数,其中代码可定制,主要包括:

  • 定义传入测试中的数据集
  • 配置测试前系统的初始状态
  • 为批量测试提供数据源

请添加图片描述

3.1 通过 conftest.py 共享 fixture

fixture 可放在单独的测试文件中,也可在放在某公共目录下的 conftest.py 文件中供所在及其子目录下的多个测试文件共享

3.2 使用 fixture 执行配置及销毁逻辑

fixture 函数会在测试函数之前运行,但若含 yield,就会在 yield 处停止,转而运行测试函数,测试函数执行完毕后再回到 fixture,继续执行 yield 后面的代码

fixture 中 yield 之前的代码 --> 测试函数 --> fixture 中 yield 之后的代码

  • 即:fixture 中 yield 之前的代码 = setup;fixture 中 yield 之后的代码 = teardown
  • 注意:无论测试过程中发生什么,yield 之后的代码都会被执行

请添加图片描述

3.3 使用 --setup-show 回溯 fixture 的执行过程

使用 --setup-show 选项可展示测试过程中执行的是什么,以及先后顺序
请添加图片描述

3.4 使用 fixture 传递测试数据

除了堆栈跟踪的内容,pytest 还给出了具体引起 assert 异常的函数参数值

  • fixture 作为测试函数的参数,也会被堆栈跟踪并纳入测试报告

在这里插入图片描述
若 assert 异常(或任何类型的异常)就发生在fixture,仍可正确定位到,且报告为 ERROR(而不是 FAIL)
在这里插入图片描述

3.5 使用多个 fixture

请添加图片描述
使用 fixture 的优势在于:用户在编写函数时可以只考虑核心测试逻辑,而无需考虑测试前的准备工作

  • 注释中写 GIVEN/WHEN/ThHEN,fixture 中多写 GIVEN,可增加测试的可读性和可维护性

在这里插入图片描述

3.6 指定 fixture 作用范围

  • fixture 包含一个叫 scope可选参数,用于控制执行配置和销毁逻辑的频率,有4个待选值:
    • function(默认):每个测试函数运行一次
    • class:每个测试类运行一次
    • module:每个模块运行一次
    • session:每次会话运行一次
  • scope 参数是在定义而非调用 fixture 时定义的,即:使用 fixture 的测试函数无法改变其作用范围
  • fixture 只能使用同级别即以上的 fixture,如:类级别的 fixture 可使用类、模块和会话级别的 fixture,但不能使用函数级别的 fixture
    在这里插入图片描述

3.7 使用 usefixtures 指定 fixture

使用 fixture,除了以上在测试函数参数列表中指定 fixture 外,也可以用 pytest.mark.usefixtures('fixture1', 'fixture2') 标记测试函数或类

  • usefixtures 参数列表中的 fixture 为字符串,即需要加引号
  • usefixtures 对测试函数来讲意义不大,但非常适合测试类
  • usefixtures 不能使用 fixture 的返回值,但在测试方法中添加 fixture 参数的方式可以

在这里插入图片描述

3.8 为常用 fixture 添加 autouse 选项

autouse=True 可使作用域内的测试函数都运行该 fixture,而不需要指名调用
在这里插入图片描述

3.9 为 fixture 重命名

可以使用 @pytest.fixture()name 参数对 fixture 重命名

  • 重命名后原名不可用
    在这里插入图片描述
    pytest 的 --fixtures 选项可列举所有可供测试使用的 fixture,包括重命名的
    在这里插入图片描述

3.10 Fixture 的参数化

使用参数化 fixture,每个使用该 fixture 的测试函数都可以被运行多次

  • 未指定 id
    在这里插入图片描述
  • 以列表指定 id
    在这里插入图片描述
  • ids 参数也可以被指定为一个函数,供 pytest 生成 task 标识

3.11 参数化 Tasks 项目中的 fixture

之前 Tasks 项目用的数据库都是 TinyDB,现改为既可使用 TinyDB,也可使用 MongoDB

  1. fixture 装饰器中添加 params=['tiny', 'mongo']
  2. request 添加到 temp_db 参数列表中
  3. 将 db_type 的值设定为 request.param,避免直接使用 ‘tiny’ 或 ‘mongo’

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue开发区分开发环境和生产环境,以及预发布环境

vue开发区分开发环境和生产环境,以及预发布环境 在根目录创建 .env[mode] 文件,在项目执行 npm run dev 的时候vite会自动去读取.env.development文件里面的配置,执行npm runbuild进行打包之后也会自动将.env.production的内容打包进去&…

MyBatis使用:拦截器,SpringBoot整合MyBatis

1、目标 本文的主要目标是学习使用MyBatis拦截器,并给出拦截器的实例 2、拦截器的使用 2.1 Intercepts注解和Signature注解 Intercepts注解,指定拦截哪个拦截器的哪个方法,还要指定参数,因为可能发生方法重载 按照顺序可以拦…

人脸识别签到系统

人脸识别签到系统是一种利用计算机视觉技术和生物识别技术自动识别个体面部特征并进行身份验证的应用系统。这种系统通常应用于需要快速且准确的身份验证场景,例如公司员工打卡、学校上课签到、大型活动入场等。下面是对该系统的详细介绍: 项目背景及目…

【硬件模块】LCD1602显示模块

LCD液晶显示模块实物图 字符型液晶显示模块,可显示16列2行,共32个字符,每个字符都由5x8像素点阵构成。 常见型号:1602(16列2行);2004(20列4行);12864&#xf…

不用下载!玩《黑神话·悟空》图文教程by无影云电脑,开机即玩

使用阿里云无影云电脑畅玩《黑神话悟空》游戏图文教程,不需要下载,超简单开机即玩。无影云电脑提供WeGame版镜像和Steam版镜像,开机就能玩。阿小云分享阿里云官方发布的用无影云电脑畅玩《黑神话悟空》游戏图文教程: 无影云电脑玩…

笔记本电脑数据恢复的最佳解决方案 - 100%快速和安全

到目前为止,数字设备已成为我们生活中不可或缺的一部分。电脑、手机和数码相机丰富了我们的生活,给我们带来了很多便利。近年来,笔记本电脑越来越受到人们的欢迎,主要是因为它相对较轻且易于携带。 但是,如果笔记本电脑…

C++必修:set/map,mutiset/mutimap的用法

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. set的介绍 在 C 中,set 是一种关联容器,用于存储唯一的…

JavaScript初级——DOM查询的其他方法

1、在document中有一个属性 body ,保存的是body的引用。 2、document.documentElement 保存的是 html 根标签。 3、document.all 代表页面中所有的元素。 4、根据元素的 class 属性值查询一组元素节点对象 getElementsByClassName()可以根…

c++中的const权限及static成员

c中的const权限 void Print() {cout << _year << "-" << _mouth << "-" << _day << endl; } void f(const Date& d) {d.Print(); } this指针为非const的&#xff0c;故需要 //void Print(const Date* this) voi…

【机器学习】数据预处理、特征缩放以及有偏分布的基本概念

引言 数据预处理是机器学习过程中的一个关键步骤&#xff0c;它涉及对原始数据进行清洗、转换和重塑&#xff0c;以提高模型的性能和准确性 文章目录 引言一、数据预处理1.1 定义1.2 步骤1.2.1 数据清洗1.2.2 数据转换1.2.3 数据重塑1.2.4 数据分割1.2.5 数据增强1.2.6 处理不平…

Java—基础知识总结 ٩(๑❛ᴗ❛๑)۶

目录&#xff1a; 一、Java基础知识 1、Java的语言特性&#xff1a; 2、Java的注释&#xff1a; 3、标识符&#xff1a; 4、关键字&#xff1a; 5、数据类型与变量&#xff1a; 1&#xff09;、常量&#xff1a; 2&#xff09;数据类型&#xff1a; 3&#xff09;、变量…

零基础5分钟上手亚马逊云科技-搭建CDN加速应用访问

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

标准版v5.4安卓手机小程序扫码核销读取不到核销码的问题

修改这个文件&#xff0c;红色的那块代码替换成绿色的这段代码&#xff0c;然后重新打包上传。 文件地址&#xff1a;template/uni-app/pages/admin/order_cancellation/index.vue let path decodeURIComponent(res.path); self.verify_code path.split(‘code’)[1]; h5…

MTK的ATA工厂PCBA贴片验证测试

1.ATA测试就是PCBA硬件测试,目的如下 在工厂生产过程中,在PCB SMT贴装器件并烧录软件后,需要验证DUT(device under test)板上各个功能模块单元的driver基本功能是否正常,通过测试筛查出贴片异常或元器件物料异常等不良PCBA主板。 2.要进行此测试,MTK官方所要求的条件如下…

【C++】函数模板特化:深度解析与应用场景

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

【25届秋招】Shopee 0825算法岗笔试

目录 1. 第一题2. 第二题3. 第三题 ⏰ 时间&#xff1a;2024/08/25 &#x1f504; 输入输出&#xff1a;LeetCode格式 ⏳ 时长&#xff1a;2h 本试卷有10道单选&#xff0c;5道多选&#xff0c;3道编程。 整体难度非常简单&#xff0c;博主20min成功AK&#xff0c;这里只给出编…

Self-attention反向传播和梯度消失计算

文章目录 1、前言2、Self-attention的特点3、为什么是(Q, K, V)三元组4、归一化和放缩4.1、Normalization4.2、Scaled4.3、总结 5、Softmax的梯度变化5.1、Softmax函数的输入分布是如何影响输出的5.2、反向传播的过程中的梯度求导5.3、出现梯度消失现象的原因 6、维度与点积大小…

如何使用ssm实现固定资产管理系统

TOC ssm167固定资产管理系统jsp 绪论 1.1 选题背景 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需…

Golang测试func TestXX(t *testing.T)的使用

一般Golang中的测试代码都以xxx_test.go的样式&#xff0c;在命名测试函数的时候以Testxx开头。 以下是我写的一个单元&#xff1a; package testsimport "strings"func Split(s, sep string) (res []string) {i : strings.Index(s, sep)for i > -1 {res append…

常见虚拟现实硬件设备及特点

一、常见的虚拟现实设备介绍 &#xff08;1&#xff09;VR设备 &#xff08;2&#xff09;AR设备 &#xff08;3&#xff09;MR设备 二、各种虚拟现实设备的特点 序号种类设备沉浸感价格比较&#xff08;元&#xff09;占用场地等特点1VRPC主机普通显示器不是全沉浸6000就是办…