当前位置: 首页 > 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

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

http://www.lryc.cn/news/275719.html

相关文章:

  • redis被攻击
  • 二手买卖、废品回收小程序 在app.json中声明permission scope.userLocation字段 教程说明
  • 【AI视野·今日Sound 声学论文速览 第四十期】Wed, 3 Jan 2024
  • Unity组件开发--升降梯
  • 插槽slot涉及到的样式污染问题
  • OpenCV-Python(25):Hough直线变换
  • python接口自动化(七)--状态码详解对照表(详解)
  • Android 实现动态申请各项权限
  • 【leetcode】力扣热门之合并两个有序列表【简单难度】
  • 安全与认证Week3 Tutorial+历年题补充
  • 【Kotlin】协程
  • Scikit-Learn线性回归(五)
  • React(2): 使用 html2canvas 生成图片
  • CAN物理层协议介绍
  • 华为OD机试真题-计算面积-2023年OD统一考试(C卷)
  • 设计模式之策略模式【行为型模式】
  • git使用(完整流程)
  • 九、HTML头部<head>
  • 机器学习期末复习
  • python-日志模块以及实际使用设计
  • googlecode.log4jdbc慢sql日志,格式化sql
  • Linux程序、进程和计划任务
  • 【MySQL】索引基础
  • 精确管理Python项目依赖:自动生成requirements.txt的智能方法
  • JavaWeb基础(1)- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件监听、正则表达式)
  • java SSM体育器材租借管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 西电期末1030.函数的最大值
  • 在Docker中安装Tomact
  • 【书生大模型00--开源体系介绍】
  • 基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理