Pytest单元测试框架如何实现参数化

Noah
Noah
发布时间:2026-10-14 | 3人浏览过
原创

本文介绍Pytest框架中pytest.mark.parametrize装饰器的使用方法。通过示例演示如何传入单个参数及多个参数,说明argnames与argvalues的定义规则,以及元组对应关系。适用于希望提升测试效率的Python开发者参考。

Pytest参数化基础

在Pytest单元测试框架中,实现参数化测试主要依赖特定的装饰器。

核心语法为pytest.mark.parametrize(argnames,argvalues)。

其中,argnames用于指定测试函数的参数名称。

argvalues用于提供参数对应的具体值,其类型必须为可迭代对象,通常使用列表(list)形式。

单个参数传递示例


import pytest
class Test01():
  @pytest.mark.parametrize("school",["深圳多测师","广州多测师","上海多测师"])
  def test_dcs(self,school):
    print(school)
if __name__ == '__main__':
  pytest.main(["-s","test_demo1.py"])
# 结果如下
test_demo1.py 
深圳多测师.
广州多测师.
上海多测师.

多个参数传递示例

当需要传入多个参数时,语法结构略有不同。

写法为pytest.mark.parametrize((arg1,arg2),[(argvalue1,argvalue2),(argvalue3,argvalue4)])。

在此结构中,列表内的每个元素均为一个元组,元组内部的元素依次与定义的多参数一一对应。

多参数代码实现


import pytest

class Test01():

  @pytest.mark.parametrize(("school","schoolmaster"),
               [("深圳多测师","Mr.Chen"),
               ("上海多测师","Mr.Xie"),
               ("广州多测师","Mr.Fu")])
  def test_dcs(self, school, schoolmaster):
    print("{}校区的校长是{}".format(school,schoolmaster))
if __name__ == '__main__':
  pytest.main(["-s","test_demo1.py"])

# 结果如下
test_demo1.py 
深圳多测师校区的校长是Mr.Chen.
上海多测师校区的校长是Mr.Xie.
广州多测师校区的校长是Mr.Fu.

以上即为Pytest参数化的主要内容,希望对相关学习有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表