pytest-yaml-sanmu(七):使用fixture返回值

fixture 是 pytest 中非常重要的功能,大部分项目都可能会用到 fixture。
pytest 的内置标记 usefixtures 可以帮助用例自动的使用 fixture
1. 创建 fixture
pytest 中的 fixtures 大致有两个用途
-
在用例执行之前、执行之后,自动的执行
-
通过 fixture 为用例提供数据
@pytest.fixture()def print_msg():print('用例开始执行') # yeild 之前为前置yieldprint('用例执行结束')# yeild 之后为前置@pytest.fixturedef base_url():yield 'https://www.baidu.com' # yeild 指定返回值
当然了,也可以同时实现两种用途
@pytest.fixturedef base_url():print('用例开始执行') # yeild 之前为前置yield 'https://www.baidu.com' # yeild 指定返回值print('用例执行结束')# yeild 之后为前置
2. 请求 fixture
用例如果需要使用 fixture,可以通过标记 usefixtures 来进行请求。
注意标记名是 s 结尾,表明允许同时请求多个 fixture:
test_name: 请求fixturemark:- usefixtures:- print_msg- base_urlsteps:- request:method: geturl: http://baidu.com
执行结果如下:

图 1. 请求 fixture 执行前后置操作
3. 使用 fixture 返回值
在 fixture 的第二个用途中,会为用例提供数据。
那么用例该如何获取和使用这个数据呢?一共有两种方式
第一种方式,
如果该数据是字符串或数字,可以直接写入 yaml 中使用的,可采用【参数变量】的方式进行使用
test_name: fixture返回值mark:- usefixtures:- print_msg- base_urlsteps:- request:method: geturl: ${base_url}/abc.html
执行结果如下:

图 2. 使用 fixture 返回值
有结果可知,用例使用来 fixture 的返回值来决定服务器地址
第二种方式,
如果 fixture 返回值是一个对象,不能直接作为 yaml 内容,可在 hook 中更灵活的使用
首先创建 fixture:
@pytest.fixture()def driver():obj = webdriver.Chrome()yield obj
接着在 yaml 中请求 fixture:
test_name: 在hook中使用fixturemark:- usefixtures:- driversteps:- request:method: geturl: /abc.html
最后在 hook 中指定 fixture 返回值使用方式
def pytest_yaml_run_step(item):step = item.current_steprequest = step.get('request')fixture_client = item.usefixtures.get('client') # 获取usefixtures中的fixtureif fixture_client:fixture_client.request(**request) # 使用fixture发送请求return
第二种方法为用例的执行方式提供更多的灵活和扩展性,适合对 pytest 比较熟悉之后使用。
4. 参数化 fixture
pytest 的 fixture 也可以参数化,其效果和 mark.parametrize 相似,都会生成更多的用例来执行。
唯一的区别是:
-
mark.parametrize的参数值由用例提供,写在 yaml 中 -
fixture 参数化的参数值由 fixture 提供,写在 python 中
下面是一个参数化的 fixture
@pytest.fixture(params=['a', 'b', 'c'])def name(request):return request.param
其返回值不是固定的,而是依次将 a、b、c 作为返回值,这使得请求该 fixture 的用例也湖执行 3 次。
test_name: fixture返回值mark:- usefixtures:- namesteps:- request:method: geturl: https://www.baidu.com/?o=${name}
执行结果如下:

图 3. 使用参数化 fixture
能看到这里说明是真爱,关注一下吧
相关文章:
pytest-yaml-sanmu(七):使用fixture返回值
fixture 是 pytest 中非常重要的功能,大部分项目都可能会用到 fixture。 pytest 的内置标记 usefixtures 可以帮助用例自动的使用 fixture 1. 创建 fixture pytest 中的 fixtures 大致有两个用途 在用例执行之前、执行之后,自动的执行 通过 fixture …...
2024最全软件测试面试八股文(答案+文档+视频讲解)
Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…...
EasyBoss ERP移动端上线数据分析模块,随时查Shopee/TikTok本土店数据
前段时间,EasyBoss ERP出了个超酷炫的数字大屏功能,广受好评。 但是也有老板说,电脑端看数据不够方便啊,你们EasyBoss有本事上个手机就能看数据的功能啊! 说干就干,直接满足你们的需求! 于是在…...
机器学习与AI大数据的融合:开启智能新时代
在当今这个信息爆炸的时代,大数据和人工智能(AI)已经成为推动社会进步的强大引擎。作为AI核心技术之一的机器学习(Machine Learning, ML),与大数据的深度融合正引领着一场前所未有的科技革命,不…...
视频监控业务平台LntonCVS国标视频综合管理平台功能及技术优势
随着安防行业的快速进步,传统的视频监控平台正在与先进的技术和互联网技术融合,包括5G通信、GIS、大数据、云计算、边缘计算、AI识别、智能分析和视频直播等。这些技术的整合形成了综合性视频监控管理平台,具备集中管理、多级联网共享、互联互…...
Python面试宝典第6题:有效的括号
题目 给定一个只包括 (、)、{、}、[、] 这些字符的字符串,判断该字符串是否有效。有效字符串需要满足以下的条件。 1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。 3、每个右括号都有一个对应的相同类型的左括号。 注意:空字符…...
Windows上使用Navicat连接ubuntu上的mysql8报错:10061和1130
问题一:can’t connect to mysql server on ‘192.168.xxx.xxx’(10061) 解决: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,bind-address绑定了登陆的IP,把这两行代码注释掉,然后重启mysql。 问题二:1…...
Feign远程调用,请求头丢失情况
现象 解决方案 import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolde…...
Windows 11 安装 安卓子系统 (WSA)
How to Install Windows Subsystem for Android (WSA) on Windows 11 新手教程:如何安装Windows 11 安卓子系统 说明 Windows Subsystem for Android 或 WSA 是由 Hyper-V 提供支持的虚拟机,可在 Windows 11 操作系统上运行 Android 应用程序。虽然它需…...
CD4017 – 带解码输出的十进制计数器
CD4017 IC 是一个十进制计数器,它有 10 个输出,分别代表 0 到 9 的数字。计数器在(14号引脚)每个时钟脉冲上升时增加 1。计数器达到 9 后,它会在下一个时钟脉冲时从 0 重新开始。 引脚名称管脚 #类型描述VD…...
Spring Boot 文件上传和下载指南:从基础到进阶
文章目录 引言1. 环境配置2. 文件上传2.1 配置文件上传路径2.2 创建上传服务2.3 创建上传控制器 3. 文件下载3.1 创建下载服务3.2 创建下载控制器 4. 前端页面4.1 文件上传页面4.2 文件下载页面 5. 技术分析结论 🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o …...
Windows Server 2019部署网络负载均衡NLB服务的详细操作步骤
部署前准备 首先需要准备两台Windows Server 2019服务器,虚拟机创建请参考 VMware Workstation安装Windows Server2019系统详细操作步骤_安装windows server 2019操作系统(写出操作过程)-CSDN博客 克隆虚拟机请参考 VMware Workstation克隆虚拟机详细步骤-CSDN博…...
Java增加线程后kafka仍然消费很慢
文章目录 一、问题分析二、控制kafka消费速度属性三、案例描述 一、问题分析 Java增加线程通常是为了提高程序的并发处理能力,但如果Kafka仍然消费很慢,可能的原因有: 网络延迟较大:如果网络延迟较大,即使开启了多线…...
分布式事务实现技术及考虑点
什么是分布式事务? 首先理解什么是本地事务 平时我们在程序中通过Spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,而数据库通常和应用在同一个服务器,所…...
JavaScript中闭包的理解
闭包(Closure)概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域。简单来说;闭包内层函数引用外层函数的变量,如下图: 外层在使用一个函数包裹住闭包是对变量的保护,…...
传统IO和NIO文件拷贝过程
参考:https://blog.csdn.net/weixin_57323780/article/details/130250582...
算法思想总结:优先级队列
一、最后一块石头的重量 . - 力扣(LeetCode) 我们每次都要快速找到前两个最大的石头进行抵消,这个时候用优先级队列(建大堆),不断取堆顶元素是最好的!每次删除堆顶元素后,可以自动调整…...
《米小圈日记魔法》边看边学,轻松掌握写日记的魔法!
在当今充满数字化娱乐和信息快速变迁的时代,如何创新引导孩子们学习,特别是如何培养他们的写作能力,一直是家长和教育者们关注的焦点。今天就向大家推荐一部寓教于乐的动画片《米小圈日记魔法》,该系列动画通过其独特的故事情节和…...
鸿蒙应用实践:利用扣子API开发起床文案生成器
前言 扣子是一个新一代 AI 应用开发平台,无需编程基础即可快速搭建基于大模型的 Bot,并发布到各个渠道。平台优势包括无限拓展的能力集(内置和自定义插件)、丰富的数据源(支持多种数据格式和上传方式)、持…...
二手物品交易小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,商品信息管理,论坛管理,收货地址管理,基础数据管理 微信端账号功能包括:系统首页,商品信息&…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...
