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] > 0
    assert 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

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

相关推荐

  1. pytest装饰 @pytest.mark.parametrize 使用方法

    2024-01-05 12:10:07       29 阅读
  2. pytest装饰:@pytest.mark.incremental

    2024-01-05 12:10:07       36 阅读
  3. TypeScript 类方法装饰

    2024-01-05 12:10:07       35 阅读
  4. Python类方法装饰

    2024-01-05 12:10:07       12 阅读
  5. python装饰使用

    2024-01-05 12:10:07       17 阅读
  6. python中装饰的简单使用

    2024-01-05 12:10:07       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 12:10:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 12:10:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 12:10:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 12:10:07       18 阅读

热门阅读

  1. 单调栈:General

    2024-01-05 12:10:07       29 阅读
  2. Spring MVC之Handler的四种类型

    2024-01-05 12:10:07       44 阅读
  3. pytorch中的wheel文件

    2024-01-05 12:10:07       27 阅读
  4. C语言——!(--x)和!(-x)以及while(!(--x)) 和 while(!(-x))

    2024-01-05 12:10:07       27 阅读
  5. 什么是软件测评?

    2024-01-05 12:10:07       38 阅读
  6. vue2和vue3 部署打包到线上子目录的区别

    2024-01-05 12:10:07       36 阅读
  7. 50、Flink的单元测试介绍及示例

    2024-01-05 12:10:07       31 阅读
  8. flutter 项目安卓开启混淆防止渗透

    2024-01-05 12:10:07       36 阅读
  9. LN和BN

    LN和BN

    2024-01-05 12:10:07      29 阅读
  10. cnn lstm结合网络

    2024-01-05 12:10:07       41 阅读
  11. uniapp vue 前端页面半小时选择器

    2024-01-05 12:10:07       30 阅读