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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/595463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8(修改 Spring Boot 的 JDK 版本同理) 从上面的 Spring Boot 官网的截图中可以发现,自…

什么是机器学习?

国际机器学习大会的创始人之一 Tom Mitchell 对机器学习的定义是: 计算机程序从经验 E 中学习, 解决某一任务 T, 进行某一性能度量 P, 通过 P 测定在 T 上的表现因经验 E 而提高. 特征(feature), 自变量标签(label), 因变量 y验证数据集(validation dataset)测试数据集(test d…

爬取豆瓣电影top250的电影名称(完整代码与解释)

在爬取豆瓣电影top250的电影名称之前,需要在安装两个第三方库requests和bs4,方法是在终端输入: pip install requestspip install bs4 截几张关键性图片: 豆瓣top250电影网页 运行结果 测试html文件标签的各个方法的作用&#xf…

总结HarmonyOS的技术特点

HarmonyOS是华为自主研发的面向全场景的分布式操作系统。它的技术特点主要体现在以下几个方面: 分布式架构:HarmonyOS采用了分布式架构设计,通过组件化和小型化等方法,支持多种终端设备按需弹性部署,能够适配不同类别的…

基于SpringBoot的经方药食两用服务平台的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的经方药食两用服务平台的…

深入理解HTTP状态码

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,它通过客户端和服务器之间的请求和响应进行通信。在HTTP交互中,状态码(Status Code)是服务器用来表示请求处理状态的三位数字代码。这…

wy的leetcode刷题记录_Day71

wy的leetcode刷题记录_Day71 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2024-1-3(补) 前言 目录 wy的leetcode刷题记录_Day71声明前言2487. 从链表中移除节点题目介绍思路代码收获 509. 斐波那契数题目介绍思…

低压浪涌保护防雷器的应用方案

浪涌是指电力系统中出现的瞬时过电压或过电流,它们的持续时间很短,但幅值很高,可能达到几千伏或几千安。浪涌的主要来源有两种:一是雷电冲击,二是电力系统的切换操作。浪涌会对电气设备造成严重的损坏,甚至…

跨境电商源码技术大揭秘:9个最常见的问题及解决方案

跨境电商发展迅猛,源码技术成为关键。作为跨境电商源码领域的专家,我将向大家揭秘9个最常见的问题及解决方案,帮助您更好地应对挑战,实现技术优化。 问题一:跨境电商源码性能瓶颈如何解决? 跨境电商源码性…

STM32学习笔记十九:WS2812制作像素游戏屏-飞行射击游戏(9)探索道具系统

增加道具的初衷,是为了增加游戏的趣味性。但是现在有些游戏吧,啧啧啧。 考虑道具,我们要考虑几方面的事情: 1、道具产生,可以随机产生,指定位置或时间自动产生,击杀地方产生。 2、未捡拾的道…

【数据库原理】(7)关系数据库的完整性约束

关系模型的完整性规则是为了确保数据的唯一性和数据之间的关系的准确性。 有三类完整性约束:实体完整性、参照完整性和用户定义完整性。 其中实体完整性和参照完整性是必须满足的完整性约束条件,应该由关系系统自动支持。 实体完整性 实体完整性的核心概念 唯一性&#xf…

陪诊系统|北京陪诊小程序提升陪诊服务效果

随着科技的不断发展,人们对于医疗服务的需求也越来越高。在过去,陪诊师和陪诊公司通常需要通过电话或传真等传统方式与医院进行沟通和安排。然而,现在有了陪诊小程序,这些问题得到了解决。本文将介绍陪诊小程序的开发流程和功能&a…

【python高级用法】线程

前言 Python通过标准库的 threading 模块来管理线程。这个模块提供了很多不错的特性,让线程变得无比简单。实际上,线程模块提供了几种同时运行的机制,实现起来非常简单。 线程模块 线程对象Lock对象RLock对象信号对象条件对象事件对象 简单…

生成式AI如何重塑开发流程和开发工具

随着科技的飞速发展,人工智能(AI)已经成为当今世界最重要的技术趋势之一。在众多AI应用中,生成式AI以其独特的优势,正在对软件开发行业产生深远的影响。生成式AI通过自动化和优化软件开发过程,提高开发效率…

Java学习——设计模式——介绍

文章目录 设计模式介绍UML的类图表示类与类之间关系的表示关联关系聚合关系组合关系依赖关系继承关系实现关系 设计模式介绍 设计模式design patterns,指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提…

纯前端上传word,xlsx,ppt,在前端预览并下载成图片(预览效果可以,下载图片效果不太理想)

纯前端上传word,xlsx,ppt,在前端预览并下载成图片(预览效果可以,下载图片效果不太理想) 一.安装依赖二、主要代码 预览效果链接: https://github.com/501351981/vue-office 插件文档链接: https://501351981.github.io/vue-office/examples/d…

pth.tar的保存和读取

一、简介 在PyTorch中,.pt、.pth和.pth.tar都是保存训练好的模型的文件格式。主要区别在于: .pt是PyTorch1.6及以上版本中引入的保存格式,可以保存整个模型,包括模型结构、模型参数以及优化器状态等信息,是一个二进制文…

【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]

阅读导航 引言一、function包装器1. 概念2. 基本使用3. 逆波兰表达式求值(1)普通写法(2)使用包装器以后的写法 二、bind() 函数温馨提示 引言 很高兴再次与大家分享关于 C11 的一些知识。在上一篇文章中,我们讲解了 c…

【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)

【Linux系统编程二十六】:线程控制与线程特性 一.Linux线程库pthread1.线程控制块2.线程tid3.线程栈 二.线程控制1.线程创建2.线程退出3.线程等待 三.线程的特性1.独立栈2.局部存储3.线程可分离 一.Linux线程库pthread 在Linux中,是没有明确的线程概念的…

阿里云服务器Alibaba Cloud Linux 3镜像版本大全说明

Alibaba Cloud Linux阿里云打造的Linux服务器操作系统发行版,Alibaba Cloud Linux完全兼容完全兼容CentOS/RHEL生态和操作方式,目前已经推出Alibaba Cloud Linux 3,阿里云百科aliyunbaike.com分享Alibaba Cloud Linux 3版本特性说明&#xff…