news 2026/10/1 10:21:48

软件测试/测试开发|Pytest参数化神器,pytest.mark.parametrize()使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
软件测试/测试开发|Pytest参数化神器,pytest.mark.parametrize()使用

前言

当我们需要使用多个数据去对一个功能进行测试的时候, 如果手动编写多个测试用例的方式来实现的话, 那就完全体现不出通过代码来执行测试所具备的那种优势了, 在这个时间点, 参数化这个功能就会派上用场了, 所谓参数化的意思, 就是把测试过程中涉及到的数据从业务逻辑中单独提取出来, 然后通过传递不同的参数值给程序, 让参数去驱动测试用例一遍又一遍地运行, 这其实也就是大家所说的那个数据驱动的思想概念。

这里边儿, 我们就是要跟大家来讲一讲那个参数化还有数据驱动这俩个东西是咋回事。

参数化方式

在中, 我们使用了ddt这个库, 配合它来实现数据驱动。但是在当前的方案里面, 并不需要额外的库, 只通过.mark.()这一个方法就可以实现参数化功能了。这个方法里面的第一个参数是关于逗号分割的字符串列表的,第二个参数才是关于一个值列表的。

存在三种传递参数的方法, 具体情况如下:

单个传参

以下所示的是相关的示例代码部分。

def add(a,b):

a+b

class :

@点mark点a, 这里。

1,2,3,4,5

这个方法是定义自我a的时候用的。

add(a,1)==a+1

最终的执行结果呈现出如下状态。

============================= test =============================

... 5 items

这是一个扩展名为.py文件。

.py::::

.py::::

.py::::

.py::::

============================== 5 in 0.04s ==============================

需要注意一下的是, 名为 @.mark.() 的这种装饰器在设计上接收了两个参数, 具体来看的话, 第一个参数的形式是被确定为字符串的, 它的主要作用是用来对作为测试目标的那个函数所对应的参数进行标识工作, 而第二个参数则是通过列表或者是元组这样的数据结构来承载并传递实际的测试数据内容。

多个传参

示例代码如下:

def add(a,b):

a+b

class :

对带有标记的字符串进行标注, 所使用的字符串内容是a,b,c。

这里有一个定义方法的代码片段, 它包含参数a

add(a,b)==c

运行结果如下:

============================= test =============================

... 4 items

.py::::

.py::::

\.py:19 (.)

7 != 5

:5

:7

self等于, a等于3, b等于4。

c = 5

@.mark.('a,b,c',)

def (self,a,b,c):

> add(a,b)==c

E 7 == 5

E等于七, 而七等于将三和四相加之后所得到的那个结果。

.py:22:

.py::::

.py::::

========================= 1 , 3 in 0.06s =========================

这里有一点需要留意, 当存在多个参数的情况时, 各个参数相互之间必须采用逗号的方式进行分隔, 同时参数的具体名称以及整体的个数也要做到完全一致的对应。

总结

参数化测试是中一个特别强大的功能性东西。这个东西可以帮助把开发者去更为高效率的编写测试用这个例子的过程。它能够提高代码覆盖这个率的水平, 并且能够让测这个试代码变简单很多。

在后面的时候我们还打算继续介绍。我们会使用像yaml这样的文件形式去做更高级别的参数化和数据驱动测试这么回事。希望咱们这一篇文本能够给各位带来一些实际的帮衬作用在其中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 10:20:48

黑盒的代价——当AI说不清为什么,法律和用户都不会再等

黑盒的代价——当AI说不清为什么,法律和用户都不会再等专栏名称:AI透明度卷 第0期 序章 作者:Valhalla Matrix治理实验室 原创声明:本文为原创技术博客,基于Valhalla工程实践编写。摘要:2026年8月2日&…

作者头像 李华
网站建设 2026/10/1 10:19:33

企业怎么选标书查重软件?重点看这6项功能

对于招标代理机构、政府采购相关单位、央国企以及大型企业来说,一个项目往往涉及多份投标文件。文件数量增加后,仅靠人工逐份打开、翻阅和比对,不仅耗时,也容易遗漏相似内容。因此,选择标书查重软件时,不能…

作者头像 李华
网站建设 2026/10/1 10:16:31

2026 年版|同岗薪资差 1.5 倍!大数据人转大模型不用读研,4 个月可落地

本文对比了大数据与大模型岗位的薪资差距,指出大模型岗位薪资普遍更高。文章强调大数据工程师转型大模型具有三大优势:数据处理能力、分布式计算经验及行业知识。为有意转型的读者提供了四步转型路径:补齐深度学习基础、掌握大模型微调技术、…

作者头像 李华
网站建设 2026/10/1 10:16:24

字节跳动职位分析:用户增长策略运营-国际化数据生产平台

一、职位概述与定位分析该职位隶属于字节跳动国际化商业安全团队,核心定位是众包标注人员的用户增长与策略运营。从团队背景来看,国际化商业安全团队负责审核广告内容、预测政策违规行为并执行审核决策,而众包标注人员正是支撑这一审核体系运…

作者头像 李华
网站建设 2026/10/1 10:13:29

大模型评测指南:从MMLU到Agent,榜单该怎么读、测试怎么做

这几年被问得最多的一个问题就是:"2026年了,到底哪个大模型最强?"我每次都不太想直接回答,因为这个问题本身就是个坑。你拿 MMLU 榜单出来,对方说这玩意儿早就饱和了;你换成 Chatbot Arena 的 EL…

作者头像 李华