@pytest.fixture与@pytest.mark.parametrize结合实现参数化

背景:测试数据既要在fixture方法中使用,同时也在测试用例中使用

使用方法:在使用parametrize的时候添加"indirect=True"参数。pytest可以实现将参数传到fixture方法中,也可以在当前测试用例中使用。

原理:参数indirect=True时,pytest会把argnames当做函数去执行,将argvalues作为参数传入到argnames这个函数里。

实现demo:

通过上面的用例可以看出,当参数indirect=True时,会将name_list作为参数传入login_fixture的方法中并将通过return将结果返回,当调用login_fixture方法时可以获取到login_fixture方法的返回值,并当做test_login测试用例的参数生成多条测试用例

import pytest

name_list = ['jerry', 'Tom', 'Tony']


@pytest.fixture
def login_fixture(request):
    # 通过request.param来获取参数值
    user_fixture = request.param
    print(f'fixture中获取的值为{user_fixture}')
    return user_fixture


@pytest.mark.parametrize('login_fixture', name_list, indirect=True)
def test_login(login_fixture):
    user_test = login_fixture
    print(f'test测试用例中获取到的值为{user_test}')
    assert user_test != ''


if __name__ == '__main__':
    test_login()

上面的代码也可以这样实现:

import pytest

name_list = ['jerry', 'Tom', 'Tony']


# parametrize的格式为@pytest.mark.parametrize("参数",参数值)
@pytest.mark.parametrize("a_name_list",name_list)
def test_login(a_name_list):
    user_test = a_name_list
    print(f'test测试用例中获取到的值为{user_test}')
    assert user_test != ''


if __name__ == '__main__':
    test_login()
注:parametrize的格式可参考:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

众筹首发 | 当当狸智能天文望远镜TW2,大屏实时观景 长焦定格远方!

满天的繁星和远方景色,让人无比向往,你是否也曾渴望探索星空的奥秘,沉醉在无垠的美景之中? 然而,当我们用望远镜远眺星空时,固定姿势的观测经常让人感到疲惫,而普通相机亦是难以触及更远的距离…

Flash基础知识

1、Flash发展历程 存储器通常分为两类型,即随机存取的RAM(内存)与只读的ROM(外存)。 RAM,也称随机存取存储器,数据可以被读取和修改。它主要用于存储正在运行的程序和临时数据,是计…

OpenMMlab AI实战营第五、六期培训

OpenMMlab AI实战营第五、六期培训 OpenMMlab实战营第五、六次课2023.2.7-9学习参考第五次课笔记第六次课笔记一、什么是语义分割二、语义分割 v.s. 实例分割 v.s. 全景分割三、语义分割经典模型1.语义分割的基本思路2.**复用卷积计算**3.全连接层的卷积化4.预测图的升采样5.双…

6.深度卷积神经网络

目录 1.深度卷积神经网络ALexNet 2012AlexNetAlexNet架构AlexNet与LeNet复杂度对比总结代码实现2.使用块的网络VGG 2014 image竞猜第二VGG架构进度总结代码实现3.网络中的网络NiN全连接层的问题NiN块NiN架构总结代码实现4.含并行连结的网络(GoogLeNet)2014 image竞猜第一最好…

深信服终端安全管理系统EDR版本升级过程

EDR当前版本为3.7.12,具体参考版本详情参数。需要升级到6.0.2R1版本,该版本更改了产品名称,叫做“统一端点安全管理系统aES” 当前版本详情 版本基础信息 软件版本:3.7.12.3829 病毒库版本:20240618174426 漏洞规则库&…

LabVIEW在中国航天中的应用

​LabVIEW是一种系统设计平台及开发环境,由美国国家仪器公司(NI)开发。它在中国航天领域的应用非常广泛,涵盖了测试与测量、数据采集、控制系统设计等多个方面。以下是LabVIEW在中国航天中的几个主要应用实例: 1. 测试…

【前端项目笔记】3 用户管理

用户管理相关功能实现 涉及表单、对话框、Ajax数据请求 基本页面 用户列表开发 在router.js中导入Users.vue 解决用户列表小问题 选中(激活)子菜单后刷新不显示高亮 给二级菜单绑定单击事件,点击链接时把对应的地址保存到sessionSto…

适合企业的TTS文本转语音接口:微软TTS最新模型,发布9种更真实的AI语音

微软对Azure Al语音服务的Personal Voice功能进行了升级,引入了新的零样本学习(zero-shot)的文本到语音(TTS)模型。与初始模型相比,这些新模型提高了合成语音的自然度,并更好地模仿了提示语音中的语音特征。 微软提供了超过400种神经语音&am…

MySQL数据库的列类型

数值 tinyint 十分小的数据 1个字节 smallint 较小的数据 2个字节 mediumint 中等大小的数据 3个字节 int 标准的整数 4个字节(常用) bigint …

【送模板】5张图,帮你轻松搞懂OKR工作法

OKR是目标与关键结果法的缩写,OKR运用在工作中就是强调对业务进行逻辑思考,找到目标与关键结果之间的因果关系。这种因果关系的是否准确决定我们努力的价值。 OKR是一种高效的目标管理方法。“O”就是object,目标的意思,“kr”就…

考研计组chap4指令系统

目录 一、指令格式 155 13.操作码地址码 2.按照地址码数量 (1)零地址指令 (2)一地址指令 (3)二地址指令 (4)三地址指令 (5)四地址指令 3.指令长度 …

信号与系统概述

信号是消息的表现形式或传送载体,数学上用函数来表示。信号可以分为确定信号和随机信号、连续时间信号和离散时间信号、周期信号和非周期信号、能量信号和功率信号等。模拟信号是幅度连续的连续时间信号,而数字信号是幅度离散的离散时间信号。对于连续时…

【C#】字符串处理器

实现: 统计字符串中单词的数量。查找字符串中最长的单词,并显示其长度。将字符串中的所有单词首字母大写。将字符串中的所有单词反转。 要求: 使用面向对象的方式实现,包括至少一个类(例如 StringProcessor&#xf…

展厅设计要考虑哪些问题

1、树立醒目的标志。 展馆设计说,与众不同可以吸引更多的参观者,让参观者更容易识别和寻找,给没进过展厅的人留下印象,但不要偏离展览目标和商业形象。环顾别人的设计图,后只有一种可能。不知道应该设计什么样的图纸&a…

AI产品组件——TTS产品

语音合成TTS 序列猴子TTS,每个发音人付费标准不同,通过序列猴子开放平台使用。 微软TTS,采用信用卡后付费模式。Speech Studio,付费模式采用统一付费的形式,音效有一款女声效果逼真。 女声:晓晓&#xff…

Python8 使用结巴(jieba)分词并展示词云

Python的结巴(jieba)库是一个中文分词工具,主要用于对中文文本进行分词处理。它可以将输入的中文文本切分成一个个独立的词语,为后续的文本处理、分析、挖掘等任务提供基础支持。结巴库具有以下功能和特点: 中文分词&a…

【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)

热门高效的免费实用类API是当今开发者们追逐的宝藏。这些API提供了各种热门功能和服务,能够帮助开发者轻松地为应用程序增添实用性和吸引力。无论是人脸识别、自然语言处理、机器学习还是图像处理,这些热门高效的免费API提供了强大的功能和高效的性能&am…

图纸管理的方法、图纸管理软件

图纸管理是一个复杂且关键的过程,它涉及到图纸的创建、存储、共享、修改、审核、存档和检索等多个环节。以下是根据参考文章总结的图纸管理的具体内容和方法: 一、图纸管理的目的 1、确保图纸的准确性:通过规范的管理流程和质量控制措施&…

设计模式——观察者模式(发布/订阅模式)

观察者模式(发布/订阅模式) 是一种行为模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态发生变化时&am…

这么多人追捧的伦敦金陷阱是什么?

我们经常说伦敦金交易是有风险的,整个伦敦金市场中随时可能会出现陷阱,如果投资者不小心掉进这些陷阱,轻则被震荡离场,丢失原来已经盈利的仓位,重则可能还会承受交易本金的亏损。下面我们就来介绍两个在伦敦金交易市场…