当前位置: 首页 > news >正文

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

图片

fixture 是 pytest 中非常重要的功能,大部分项目都可能会用到 fixture。

pytest 的内置标记 usefixtures 可以帮助用例自动的使用 fixture

1. 创建 fixture

pytest 中的 fixtures 大致有两个用途

  1. 在用例执行之前、执行之后,自动的执行

  2. 通过 fixture 为用例提供数据

@pytest.fixture()def print_msg():    print('用例开始执行') #  yeild 之前为前置    yield
    print('用例执行结束')#  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: get      url: http://baidu.com

执行结果如下:

图片

图 1. 请求 fixture 执行前后置操作

3. 使用 fixture 返回值

在 fixture 的第二个用途中,会为用例提供数据。

那么用例该如何获取和使用这个数据呢?一共有两种方式

第一种方式,

如果该数据是字符串或数字,可以直接写入 yaml 中使用的,可采用【参数变量】的方式进行使用​​​​​​​

test_name: fixture返回值mark:  - usefixtures:      - print_msg      - base_urlsteps:  - request:      method: get      url: ${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: get      url: /abc.html

最后在 hook 中指定 fixture 返回值使用方式​​​​​​​

def pytest_yaml_run_step(item):    step = item.current_step    request = step.get('request')        fixture_client = item.usefixtures.get('client') # 获取usefixtures中的fixture        if 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

其返回值不是固定的,而是依次将 abc 作为返回值,这使得请求该 fixture 的用例也湖执行 3 次。

test_name: fixture返回值mark:  - usefixtures:      - namesteps:  - request:      method: get      url: 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)概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域。简单来说;闭包内层函数引用外层函数的变量,如下图: 外层在使用一个函数包裹住闭包是对变量的保护&#xff0c…...

传统IO和NIO文件拷贝过程

参考:https://blog.csdn.net/weixin_57323780/article/details/130250582...

算法思想总结:优先级队列

一、最后一块石头的重量 . - 力扣(LeetCode) 我们每次都要快速找到前两个最大的石头进行抵消,这个时候用优先级队列(建大堆),不断取堆顶元素是最好的!每次删除堆顶元素后,可以自动调整&#xf…...

《米小圈日记魔法》边看边学,轻松掌握写日记的魔法!

在当今充满数字化娱乐和信息快速变迁的时代,如何创新引导孩子们学习,特别是如何培养他们的写作能力,一直是家长和教育者们关注的焦点。今天就向大家推荐一部寓教于乐的动画片《米小圈日记魔法》,该系列动画通过其独特的故事情节和…...

鸿蒙应用实践:利用扣子API开发起床文案生成器

前言 扣子是一个新一代 AI 应用开发平台,无需编程基础即可快速搭建基于大模型的 Bot,并发布到各个渠道。平台优势包括无限拓展的能力集(内置和自定义插件)、丰富的数据源(支持多种数据格式和上传方式)、持…...

二手物品交易小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,商品信息管理,论坛管理,收货地址管理,基础数据管理 微信端账号功能包括:系统首页,商品信息&…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型,它将权限分配给角色,再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

二维FDTD算法仿真

二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...