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

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架,它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑,从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法:

1. 使用 @pytest.mark.parametrize 装饰器

这是 pytest 中最常用的参数化方法。你可以使用 @pytest.mark.parametrize 装饰器来指定测试函数的参数和对应的值。

示例:

import pytest@pytest.mark.parametrize("input, expected", [(1, 2),(2, 4),(3, 6),
])
def test_multiplication(input, expected):assert input * 2 == expected

在这个例子中,test_multiplication 函数会被调用三次,每次使用不同的 (input, expected) 对作为参数。

2. 使用 pytest-cases 插件

pytest-cases 是一个第三方插件,它提供了更强大和灵活的参数化方法。你可以使用它来定义和组合测试用例,并将它们作为参数传递给测试函数。

安装:

pip install pytest-cases

示例:

import pytest
from pytest_cases import case, parametrize_with_cases@case(id="case1")
def case_data1():return 1, 2@case(id="case2")
def case_data2():return 2, 4@parametrize_with_cases("input, expected", cases=[case_data1, case_data2])
def test_multiplication(input, expected):assert input * 2 == expected

在这个例子中,我们使用了 pytest-cases 插件来定义了两个测试用例 case_data1case_data2,并将它们作为参数传递给 test_multiplication 函数。

3. 使用 pytest-subtests 插件

pytest-subtests 插件允许你在一个测试函数中运行多个子测试,每个子测试都有自己的输入和预期输出。这对于测试具有多个分支或条件的函数非常有用。

安装:

pip install pytest-subtests

示例:

import pytest
from pytest_subtests import SubTestsdef test_multiplication():with SubTests() as subtests:for input, expected in [(1, 2), (2, 4), (3, 6)]:with subtests.test(input=input, expected=expected):assert input * 2 == expected

在这个例子中,我们使用 pytest-subtests 插件在一个测试函数中运行了多个子测试。每个子测试都使用不同的 (input, expected) 对作为参数。

这些是 pytest 中常用的参数化方法。你可以根据你的具体需求选择适合你的方法来进行参数化测试。

相关文章:

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架,它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑,从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法: 1. 使用 pytest.mark.paramet…...

设计模式-装饰者模式在Java中使用实例-打印发票装饰抬头和脚注

场景 设计模式-装饰者模式在Java中的使用示例: 设计模式-装饰者模式在Java中的使用示例_java装饰者模式例子-CSDN博客 上面装饰器的调用示例如下 AbstarctComputer computer;//要买1台电脑computer new BaseComputer();//加一个内存条computer new MemoryDecor…...

parallel linux虚拟机没有root权限

前言 今天刚在parallel上装上linux虚拟机,安装的是Debian发行版。用终端输入命令时,无意间发现当前用户竟然不是root用户,岂有此理!众所周知,Linux系统一般安装之后都是默认root用户的,但是可能parallel先…...

科技下乡:数字乡村改变乡村生活方式

在科技飞速发展的时代,数字化、信息化浪潮正以前所未有的速度席卷全球。在这场科技革命中,乡村不再是滞后的代名词,而是成为了数字乡村建设的热土。科技下乡,让数字乡村成为了改变乡村生活方式的重要力量。 一、科技下乡&#xf…...

【GitLab】Ubuntu使用宝塔安装GitLab最新社区版

首先在Ubuntu安装宝塔面板 在官网可以找到脚本一键安装 安装GitLab社区版 然后在宝塔面板的“软件商店”里面找到GitLab最新社区版 12.8.1一键安装 安装过程中可能出现以下问题: 1.卡在ruby_block[wait for logrotate service socket] action run 解决办法&…...

C++入门(2)

目录 3. C输入&输出 4. 缺省(默认)参数 4.1 缺省参数概念 4.2 缺省参数分类 全缺省参数 半缺省参数 5. 函数重载 5.1 函数重载概念 6. 引用 6.1 引用概念 6.2 引用特性 6.3 常引用 6.4 使用场景 6.5 传值、传引用效率比较 6.5.1 值和引用的作为返回值类型的性能比较 6.6 引…...

Prometheus +Grafana +node_exporter可视化监控Linux + windows虚机

1、介绍 背景:需要对多台虚机进行负载可视乎监控,并进行及时的报警 2、架构图 node_exporter :主要是负责采集服务器的信息。 Prometheus :主要是负责存储、抓取、聚合、查询方面。 Grafana : 主要是…...

腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践

腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...

python 字典练习

def main():dict1{姓名:张三, 工资: 5000}dict2{姓名:李四, 工资: 6600}dict3{姓名:王五, 工资: 8500}dict4{}dict1.update(dict2)#字典的写法print(dict1)dict1.setdefault("3月",0)#存在不作为,不存在则增补print(dict1)names[]list[dict1,dict2,dict3]…...

Postman进阶功能实战演练

Postman除了前面介绍的一些功能,还有其他一些小功能在日常接口测试或许用得上。今天,我们就来盘点一下,如下所示: 1.数据驱动 想要批量执行接口用例,我们一般会将对应的接口用例放在同一个Collection中,然…...

Flink基于Hudi维表Join缺陷解析及解决方案

Hudi,这个近年来备受瞩目的数据存储解决方案,无疑是大数据领域的一颗耀眼新星。其凭借出色的性能和稳定性,以及对于数据湖场景的深度适配,赢得了众多企业和开发者的青睐。然而,正如任何一项新兴技术,Hudi在…...

3.31学习总结

(本次学习总结,总结了目前学习java遇到的一些关键字和零碎知识点) 一.static关键字 static可以用来修饰类的成员方法、类的成员变量、类中的内部类(以及用static修饰的内部类中的变量、方法、内部类),另外可以编写static代码块来优化程序性…...

Android Studio控制台输出中文乱码问题

控制台乱码现象 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。 乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。 解决步骤: step1: 找到st…...

itextPdf生成pdf简单示例

文章环境 jdk1.8&#xff0c;springboot2.6.13 POM依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.ite…...

【Linux系列】tree和find命令

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

AI预测福彩3D第23弹【2024年4月1日预测--第4套算法重新开始计算第9次测试】

今天继续对第4套算法进行测试&#xff0c;因为第4套算法已连续多期命中&#xff0c;相对来说还算稳定。好了&#xff0c;废话不多说了&#xff0c;直接上预测的结果吧~ 2024年4月1日福彩3D的七码预测结果如下 第一套&#xff1a; 百位&#xff1a;0 1 …...

Java常见限流用法介绍和实现

目录 一、现象 二、工具 ​​​​​​1、AtomicInteger,AtomicLong 原子类操作 ​​​​​​2、RedisLua ​​​​​​3、Google Guava的RateLimiter 1&#xff09; 使用 2&#xff09; Demo 3&#xff09; 优化demo 4、阿里开源的Sentinel 三、算法 1、计数限流 &…...

算法——图论:判断二分图(染色问题)

题目&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;并查集 class Solution { public:vector<int>father;int find(int x){if (father[x] ! x)father[x] find(father[x]);return father[x];}void add(int x1, int x2){int fa1 find(x1), f…...

三步提升IEDA下载速度——修改IDEA中镜像地址

找到IDEA的本地安装地址 D:\tool\IntelliJ IDEA 2022.2.4\plugins\maven\lib\maven3\conf 搜索阿里云maven仓库 复制https://developer.aliyun.com/mvn/guide中红框部分代码 这里也是一样的&#xff1a; <mirror><id>aliyunmaven</id><mirrorOf>*&…...

CentOS7 RPM升级支持BBR TCP/CC的内核版本

列出安装的内核 rpm -qa kernel # yum list installed kernel 删除已安装内核 sudo dnf remove kernel-4.0.4-301.fc22.x86_64 安装内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noar…...

WIZnet-EVB-Pico2开始,用MicroPython玩转以太网开发

大家好呀&#xff0c;好久没跟大家唠唠我最近捣鼓的嵌入式小玩意儿了&#xff01; 这段时间一直在折腾 MicroPython 的网络开发&#xff0c;踩了不少 “入门劝退坑”&#xff0c;也挖到了个让我直呼 “相见恨晚” 的宝藏 ——​WIZnet EVB-Pico2 系列开发板​。说真的&#xf…...

稳压二极管数据手册参数深度解析:从符号到实战选型

1. 稳压二极管核心参数全解析 第一次拿到稳压二极管的数据手册时&#xff0c;我完全被那些密密麻麻的符号搞懵了。VZ、IZK、ZZT这些字母组合到底代表什么&#xff1f;后来在项目中踩过几次坑才明白&#xff0c;这些参数直接关系到电路的稳定性。就拿去年做的一个电源模块来说&a…...

构建个人技能库:高效沉淀与复用代码片段的工程实践

1. 项目概述&#xff1a;一个技能库的诞生与价值最近在整理自己的技术工具箱时&#xff0c;我意识到一个问题&#xff1a;很多实用的代码片段、脚本和解决方案&#xff0c;都散落在不同的项目、笔记甚至聊天记录里。当需要快速解决一个特定问题时&#xff0c;要么得花时间回忆&…...

为什么93%的开发者在WebRTC集成中卡在ElevenLabs音频缓冲层?——低延迟TTS流式传输终极调优方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs API开发接入指南 ElevenLabs 提供高质量、低延迟的语音合成&#xff08;TTS&#xff09;服务&#xff0c;其 RESTful API 支持多种语言、情感调节与声音克隆能力。接入前需在 ElevenLabs 控…...

基于FastAPI与Cytoscape.js构建个人技能图谱可视化平台

1. 项目概述&#xff1a;一个技能图谱的聚合与沉淀平台最近在整理自己的技术栈和项目经验时&#xff0c;我常常感到一种“知识碎片化”的困扰。学过的框架、用过的工具、解决过的特定问题&#xff0c;都散落在不同的笔记、代码仓库和记忆角落里。当需要快速构建一个原型&#x…...

千问 LeetCode 2281.巫师的总力量和 public int totalStrength(int[] strength)

LeetCode 2281. 巫师的总力量和 是一道经典的 贡献法 + 单调栈 + 前缀和的前缀和 题目。题目要求对数组的所有非空连续子数组,计算: min(subarray) * sum(subarray) 的总和,并对 10^9 + 7 取模。 ✅ 解题思路(核心思想) 我们 不枚举所有子数组(那样是 O(n)),而是 枚…...

[具身智能-670]:ROS2 Node内部的工作原理:rclpy.init()、node = MyNode() 、rclpy.spin(node)

一、三个函数的一句话功能rclpy.init()初始化 ROS2 全局系统&#xff08;上下文、信号处理、DDS&#xff09;。node MyNode()创建节点对象&#xff0c;注册名字&#xff0c;分配通信句柄&#xff0c;不创建线程。rclpy.spin(node)进入主线程死循环&#xff0c;不断检查消息 / …...

为什么92%的AI团队误用DeepSeek Serverless?——基于37家客户架构审计报告的5大认知断层与重构路径

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的AI团队误用DeepSeek Serverless&#xff1f; DeepSeek Serverless 本为轻量推理与函数即服务&#xff08;FaaS&#xff09;场景设计&#xff0c;但大量团队将其当作通用模型托管平台使用&am…...

LVGL列表控件实战:5分钟搞定一个带图标和事件响应的菜单界面

LVGL列表控件实战&#xff1a;5分钟打造高交互性嵌入式菜单界面 在嵌入式设备的人机交互设计中&#xff0c;菜单界面是最基础也最关键的组件之一。想象一下&#xff0c;当你需要为智能家居控制面板设计一个简洁明了的操作菜单&#xff0c;或者为工业设备开发一个功能选择界面时…...

Arm编译器在嵌入式开发中的优化实践

1. Arm编译器嵌入式开发环境概述在嵌入式系统开发领域&#xff0c;工具链的选择往往决定了最终产品的性能上限。作为Arm架构的"原生"编译器&#xff0c;Arm Compiler for Embedded凭借其深度优化的代码生成能力&#xff0c;在物联网设备、工业控制器等资源受限场景中…...