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

自动化测试:fixture学得好,Pytest测试框架用到老

在pytest中,fixture是一种非常有用的特性,它允许我们在测试函数中注入数据或状态,以便进行测试。而参数化则是fixture的一个特性,它允许我们将不同的数据传递给fixture,从而进行多次测试。

本文将介绍如何在pytest中使用fixture进行参数化,以便在测试中使用不同的数据集。

一、fixture的基本用法
首先,我们需要了解fixture的基本用法。fixture是一个函数,它使用@pytest.fixture装饰器进行修饰。在测试函数中,我们可以通过参数的形式引用fixture。pytest会在测试函数执行之前运行fixture函数,并将其返回值注入到测试函数中。

下面是一个简单的示例,演示了如何使用fixture:

import pytest  @pytest.fixture  
def fixture_01():  return "同学,记得关注、点赞哦!"  def test_01(fixture_01):  print(fixture_01)  assert True

在这个例子中,我们定义了一个名为fixture_01的fixture,它返回一个字符串"同学,记得关注、点赞哦!"。在test_01函数中,我们通过参数的形式引用了fixture_01。当运行测试时,pytest会先执行fixture_01函数,并将其返回值注入到test_01函数中。

二、使用参数化fixture
现在,我们来介绍如何使用参数化fixture。参数化fixture允许我们将不同的数据集传递给fixture,从而进行多次测试。这可以通过在@pytest.fixture装饰器中指定params参数来实现。

下面是一个示例,演示了如何使用参数化fixture:

import pytest  @pytest.fixture(params=[1, 2, 3])  
def fixture_02(request):  return request.param  def test_02(fixture_02):  print(fixture_02)  assert True

在这个例子中,我们定义了一个名为fixture_02的fixture,并使用params参数指定了一个列表[1, 2, 3]。在fixture函数中,我们使用request.param来获取当前测试使用的参数值。在test_02函数中,我们通过参数的形式引用了fixture_02。当运行测试时,pytest会分别使用[1, 2, 3]中的每个值作为参数来运行test_02函数。因此,这个测试会被执行三次,分别使用1、2和3作为输入参数。

三、使用多个参数化fixture
有时我们需要在测试中使用多个参数化fixture。这可以通过在测试函数中引用多个fixture来实现。下面是一个示例,演示了如何使用多个参数化fixture:

import pytest  @pytest.fixture(params=[1, 2, 3])  
def fixture_03(request):  return request.param  @pytest.fixture(params=["a", "b", "c"])  
def fixture_04(request):  return request.param  def test_03(fixture_03, fixture_04):  print(fixture_03, fixture_04)  assert True

在这个例子中,我们定义了两个参数化fixture:fixture_03和fixture_04。fixture_03使用了一个列表[1, 2, 3]作为参数,而fixture_04使用了一个列表[“a”, “b”, “c”]作为参数。在test_03函数中,我们通过参数的形式引用了这两个fixture。当运行测试时,pytest会分别使用[1, 2, 3]和[“a”, “b”, “c”]中的每个值作为参数来运行test_03函数。因此,这个测试会被执行九次,分别使用不同的输入参数组合,即【1-a,2-a,3-a,1-b,2-b,3-b,1-c,2-c,3-c】。
 最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

 

相关文章:

自动化测试:fixture学得好,Pytest测试框架用到老

在pytest中,fixture是一种非常有用的特性,它允许我们在测试函数中注入数据或状态,以便进行测试。而参数化则是fixture的一个特性,它允许我们将不同的数据传递给fixture,从而进行多次测试。 本文将介绍如何在pytest中使…...

Linux上常用网络操作

主机名配置 hostname 查看主机名 hostname xxx 修改主机名 重启后无效 如果想要永久生效,可以修改/etc/sysconfig/network文件 IP地址配置 ifconfig 查看(修改)ip地址(重启后无效) ifconfig eth0 192.168.12.22 修改ip地址 如果想要永久生效,修改 /etc/sysco…...

POI:对Excel的基本读操作 整理2

1 简单读取操作 public class ExcelRead {String PATH "D:\\Idea-projects\\POI\\POI_projects";// 读取的一系列方法// ...... } 因为07版本和03版本操作流程大差不差,所以这边就以03版本为例 Testpublic void testRead03() throws IOException {//获取…...

LeetCode每周五题_2024/01/15~01/19

文章目录 82. 删除排序链表中的重复元素 II题目题解 2744. 最大字符串配对数目题目题解 82. 删除排序链表中的重复元素 II 82. 删除排序链表中的重复元素 II 题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字…...

免费chartGPT网站汇总

https://s.suolj.com - (支持文心、科大讯飞、智谱等国内大语言模型,Midjourney绘画、语音对讲、聊天插件)国内可以直连,响应速度很快 很稳定 https://seboai.github.io - 国内可以直连,响应速度很快 很稳定 http://gp…...

【分布式微服务专题】SpringSecurity OAuth2快速入门

目录 前言阅读对象阅读导航前置知识笔记正文一、OAuth2 介绍1.1 使用场景*1.2 基本概念(角色)1.3 优缺点 二、OAuth2的设计思路2.1 客户端授权模式2.1.0 基本参数说明2.1.1 授权码模式2.1.2 简化(隐式)模式2.1.3 密码模式2.1.4 客…...

Spring Boot实现国际化

src\main\resources\i18n\messages_zh_CN.properties message.hello你好,世界! message.welcome欢迎! src/main/resources/i18n/messages_en_US.properties message.helloHello World! message.welcomeWelcome! 默认语言 src\main\resources\…...

面试题之ElasticSearch

面试题之ElasticSearch 1.es的基础知识2. es的集群、节点、分片、副本分片的定义?3. es为什么快?4. 倒排索引的原理是什么?5. es的segment是什么?6. es的分段存储和分段索引的概念及区别?7. 索引相关的问题&#xff1f…...

第10章 通信业务

文章目录 10.1.1 通信行业1、通信行业的界定2、通信行业的特点 10.1.2 通信企业10.1.3 通信终端1、通信终端的分类2、终端发展趋势 10.2.1 通信业务的定义及分类10.2.2 基础电信业务1、第一类基础电信业务A11 固定通信业务A12 蜂窝移动通信业务A13 第一类卫星通信业务A14 第一类…...

c++ 指针的安全问题

指针是一个强大的工具,但它们可能导致多种安全问题。接下来我们一起研究一下会出现的安全问题。欢迎大家补充说明!!! 悬挂指针(也称为悬空指针或迷途指针) 是指向一块已经释放或无效内存的指针。悬挂指针…...

高质量训练数据助力大语言模型摆脱数据困境 | 景联文科技

目前,大语言模型的发展已经取得了显著的成果,如OpenAI的GPT系列模型、谷歌的BERT模型、百度的文心一言模型等。这些模型在文本生成、问答系统、对话生成、情感分析、摘要生成等方面都表现出了强大的能力,为自然语言处理领域带来了新的突破。 …...

elasticsearch查询

(1)简单查询 curl -XGET http://127.0.0.1:9201/_search curl -XGET http://127.0.0.1:9201/test231208/_search curl -XGET http://127.0.0.1:9201/test231208/_doc/_search curl -XGET http://127.0.0.1:9201/test231208/_doc/id (2&…...

Vue + JS + tauri 开发一个简单的PC端桌面应用程序

Vue JS tauri 开发一个简单的PC端桌面应用程序 文章目录 Vue JS tauri 开发一个简单的PC端桌面应用程序1. 环境准备1.1 安装 Microsoft Visual Studio C 生成工具[^2]1.2 安装 Rust[^3] 2. 使用 vite 打包工具创建一个 vue 应用2.1 使用Vite创建前端Vue项目2.2 更改Vite打包…...

7.5 MySQL对数据的增改删操作(❤❤❤)

7.5 MySQL对数据的基本操作 1. 提要2. 数据添加2.1 insert语法2.2 insert 子查询2.3 ignore关键字 3. 数据修改3.1 update语句3.2 update表连接 4. 数据删除4.1 delete语句4.2 delete表连接4.3 快速删除数据表全部数据 1. 提要 2. 数据添加 2.1 insert语法 2.2 insert 子查询 …...

kibana查看和展示es数据

本文来说下使用kibana查看和展示es数据 文章目录 数据准备查询所有文档示例kibana查看和展示es数据 数据准备 可以使用es的命令或者java程序来往,es进行新增数据 查询所有文档示例 在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:92…...

若依修改侧边栏

引用:https://blog.csdn.net/Sabrina_cc/article/details/125871591 子菜单选中后,文字和背景改变: .el-submenu__title i{color: #e8e8e8 !important;} #app .sidebar-container .theme-dark .nest-menu .el-submenu .is-active > .el-su…...

Linux篇之Centos中将系统时间设置为本地时间

要在 CentOS 上将系统时间设置为本地时间,可以按照以下步骤进行操作: 1.首先,你需要确定你想要设置的本地时间。例如,如果你想要将系统时间设置为当前时间(假设是北京时间),则可以使用以下命令获…...

翼龙-2H无人机

一、概述 翼龙-2,是成都飞机工业集团研制的无人驾驶飞行器,是空中侦察、精确打击和应急通讯的平台。成都飞机工业集团于2015年9月的北京国际航空航天展览会上介绍了翼龙-2的概念。在2016年珠海航展期间,翼龙-2的原型机首次向公众展示。 因为…...

解析Transformer模型

原文地址:https://zhanghan.xyz/posts/17281/ 进入Transformer RNN很难处理冗长的文本序列,且很容易受到所谓梯度消失/爆炸的问题。RNN是按顺序处理单词的,所以很难并行化。 用一句话总结Transformer:当一个扩展性极佳的模型和一…...

【深度学习】RTX2060 2080如何安装CUDA,如何使用onnx runtime

文章目录 如何在Python环境下配置RTX 2060与CUDA 101. 安装最新的NVIDIA显卡驱动2. 使用conda安装CUDA Toolkit3. 验证onnxruntime与CUDA版本4. 验证ONNX需求版本5. 安装ONNX与onnxruntime6. 编写ONNX推理代码 如何在Python环境下配置RTX 2060与CUDA 10 RTX 2060虽然是一款较早…...

Copilot 插入广告引担忧,AI 工具商业化边界受考

Copilot 拉取请求中惊现广告插入团队成员使用 Copilot 纠正拉取请求(PR)中的拼写错误时,出现了令人意想不到的情况。Copilot 不仅修改了 PR 描述,还插入了它自身以及 Raycast 的广告。这一行为引发了用户的强烈反应,有…...

Kandinsky-5.0-I2V-Lite-5s镜像免配置优势:内置VAE/CLIP/Qwen2.5-VL,开箱即用

Kandinsky-5.0-I2V-Lite-5s镜像免配置优势:内置VAE/CLIP/Qwen2.5-VL,开箱即用 1. 产品概述 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型,专为快速视频创作设计。只需上传一张首帧图片,再补充一句运动或镜头描述&#xf…...

Janus-Pro-7B惊艳效果:图表理解→数据洞察→信息图生成端到端

Janus-Pro-7B惊艳效果:图表理解→数据洞察→信息图生成端到端 1. 模型概述:统一多模态的新突破 Janus-Pro-7B是DeepSeek发布的一款统一多模态理解与生成模型,真正实现了"看懂图"和"生成图"的双重能力。这个模型最大的特…...

掌握MEAN.JS模块化开发:5个核心模块实战指南与最佳实践

掌握MEAN.JS模块化开发:5个核心模块实战指南与最佳实践 【免费下载链接】mean MEAN.JS - Full-Stack JavaScript Using MongoDB, Express, AngularJS, and Node.js - 项目地址: https://gitcode.com/gh_mirrors/mea/mean MEAN.JS作为基于MongoDB、Express、…...

springboot+vue基于web的校园商铺摊位管理系统

目录功能模块分析技术实现要点扩展功能建议数据库设计关键表项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作##同行可拿货,招校园代理 ,本人源头供货商功能模块分析 后台管理模块(SpringBoot) 管理员登…...

如何用A_B测试优化AI模型的业务指标?

如何用A/B测试优化AI模型的业务指标? 关键词:A/B测试、AI模型优化、业务指标、实验设计、数据驱动决策、模型迭代、统计显著性 摘要:本文深入探讨如何利用A/B测试方法来优化AI模型的业务指标。我们将从基础概念出发,通过生活化的比喻解释A/B测试原理,详细分析其在AI模型优…...

Python异步编程新选择:用Channels替代Celery实现实时消息推送(Django 3.2+演示)

Python异步编程新选择:用Channels替代Celery实现实时消息推送(Django 3.2演示) 当你的Django应用需要处理实时消息推送时,传统的CeleryWebhook方案可能已经无法满足你对低延迟的需求。本文将带你探索如何利用Django Channels和Web…...

【设计模式】行为型-模板方法模式

文章目录前言一、概念二、核心结构三、Java 代码实现(订单支付流程)1. 抽象类(定义模板)2. 具体子类:微信支付3. 具体子类:支付宝支付4. 客户端调用四、钩子方法(Hook)—— 让模板更…...

别再手动推导了!用Sophus库5分钟搞定机器人SLAM中的位姿插值与扰动更新

别再手动推导了!用Sophus库5分钟搞定机器人SLAM中的位姿插值与扰动更新 在机器人SLAM开发中,你是否曾为手动推导旋转矩阵的插值公式而抓狂?是否在实现位姿扰动更新时被四元数微分弄得晕头转向?今天,我们将用Sophus库彻…...

**NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践**在人工智能加速领域,

NPU设计新范式:基于RISC-V的可配置计算单元实现与性能优化实践 在人工智能加速领域,NPU(神经网络处理单元) 正从专用硬件向灵活可编程架构演进。本文将深入探讨一种基于 RISC-V指令集扩展 的轻量级NPU设计方案,并通过实…...