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,并发布到各个渠道。平台优势包括无限拓展的能力集(内置和自定义插件)、丰富的数据源(支持多种数据格式和上传方式)、持…...
二手物品交易小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,商品信息管理,论坛管理,收货地址管理,基础数据管理 微信端账号功能包括:系统首页,商品信息&…...
从零构建CPWC超声成像仿真:Field II实战与模块化工作流解析
1. CPWC超声成像仿真入门指南 第一次接触CPWC超声成像仿真时,我被各种专业术语和复杂的数学公式搞得晕头转向。经过几个月的实战摸索,终于总结出一套小白也能快速上手的方法。CPWC(相干平面波复合)是近年来超声成像领域的热门技术…...
技术竞赛之道:从创新构想到落地执行的实战心法
技术竞赛之道:从创新构想到落地执行的实战心法 【免费下载链接】A-to-Z-Resources-for-Students ✅ Curated list of resources for college students 项目地址: https://gitcode.com/GitHub_Trending/at/A-to-Z-Resources-for-Students 在当今技术驱动的时…...
LiuJuan20260223Zimage在CSDN技术博客创作中的全流程辅助
LiuJuan20260223Zimage:技术博主的高效创作伙伴 写技术博客,最头疼的是什么? 是选题枯竭,对着空白文档发呆半天?是写到一半,发现某个技术点解释不清,需要到处查资料?还是好不容易写…...
OpenGL 3D项目避坑指南:从贴图资源获取到交互菜单设计,我的CPT205大作业复盘
OpenGL 3D项目避坑指南:从贴图资源获取到交互菜单设计 当第一次接触OpenGL 3D项目时,许多计算机图形学学习者都会陷入相似的困境——如何在有限时间内完成一个既美观又功能完整的作品?本文将以CPT205课程大作业为例,分享从资源获取…...
基于StructBERT的短视频评论情感分析系统搭建
基于StructBERT的短视频评论情感分析系统搭建 1. 引言 短视频平台每天产生海量用户评论,这些评论蕴含着用户对内容的真实感受和反馈。传统的人工审核方式效率低下,难以应对实时海量的评论数据。而基于StructBERT的情感分析系统能够自动识别评论的情感倾…...
深求·墨鉴(DeepSeek-OCR-2)完整指南:从卷轴入画到经纬重现
深求墨鉴(DeepSeek-OCR-2)完整指南:从卷轴入画到经纬重现 1. 引言:当科技遇见水墨美学 在日常工作中,我们经常需要将纸质文档转换为可编辑的电子文本。传统的OCR工具往往界面复杂、操作繁琐,让人望而却步…...
UG/NX Block UI Styler字符串控件避坑指南:常见问题与解决方案
UG/NX Block UI Styler字符串控件避坑指南:常见问题与解决方案 在UG/NX二次开发中,Block UI Styler作为可视化对话框设计工具,其字符串控件(String Control)是使用频率最高的交互元素之一。无论是参数输入、状态显示还…...
深入解析Waybackpack核心架构:Asset、Pack和Session三大组件
深入解析Waybackpack核心架构:Asset、Pack和Session三大组件 【免费下载链接】waybackpack Download the entire Wayback Machine archive for a given URL. 项目地址: https://gitcode.com/gh_mirrors/wa/waybackpack Waybackpack是一个强大的Python命令行工…...
Polars 2.0快速接入全链路拆解(含Benchmark实测:比Pandas快42.6×,比Dask低68%内存)
第一章:Polars 2.0快速接入全链路概览Polars 2.0 是一个高性能、内存友好的 DataFrame 库,专为现代多核 CPU 和列式分析场景设计。它通过 Rust 编写核心引擎,Python 接口(polars-py)提供零拷贝数据交互能力,…...
QT6在Ubuntu20.4上的避坑指南:为什么你的安装总是失败?
QT6在Ubuntu 20.04上的避坑指南:从依赖缺失到环境配置的深度解析 Ubuntu 20.04作为长期支持版本,至今仍是许多开发者的首选系统。然而当你想在这个稳定版本上安装QT6时,可能会遇到各种意想不到的问题——从依赖库冲突到权限错误,从…...
