欢迎访问宙启技术站
智能推送

使用parametrize()函数实现数据驱动测试

发布时间:2023-12-23 17:44:55

parametrize()函数是pytest框架提供的一个装饰器,用于实现数据驱动测试。它的作用是可以在一个测试用例中多次运行,每次运行使用不同的参数。

parametrize()函数的使用方法如下:

1. 导入pytest包和parametrize()函数:

import pytest

2. 创建一个测试用例函数,并使用parametrize()进行装饰:

@pytest.mark.parametrize("param1, param2", [
    (value1, value2),
    (value3, value4),
    ...
])
def test_function_name(param1, param2):
    # 测试用例的具体实现

3. 在parametrize()装饰器中, 个参数是参数名的字符串,后面是参数值的列表或元组。每个元素表示一组参数值,可以有多组参数值。参数值可以是任意类型,例如字符串、整数、浮点数等等。

4. 在测试用例函数中,参数列表与parametrize()函数中参数名的顺序和个数必须一致。可以通过参数名来获取对应的参数值。

下面是一个具体的示例,实现一个计算器的加法功能的测试:

import pytest

# 加法函数
def add(a, b):
    return a + b

# 测试用例
@pytest.mark.parametrize("a, b, expected", [
    (1, 1, 2),
    (0, 0, 0),
    (-1, 1, 0),
    (3.14, 2.86, 6.0)
])
def test_add(a, b, expected):
    assert add(a, b) == expected

在以上示例中,test_add函数使用parametrize()装饰器进行了装饰,定义了三个参数a、b和expected。parametrize()函数中指定了四组参数值,分别为(1, 1, 2)、(0, 0, 0)、(-1, 1, 0)、(3.14, 2.86, 6.0)。在测试用例中,使用assert语句进行断言,判断add函数的返回值是否与预期的值相等。

运行以上测试用例,会输出如下结果:

============================= test session starts ==============================
...
collected 4 items

test_parametrize.py::test_add[1-1-2] PASSED                             [ 25%]
test_parametrize.py::test_add[0-0-0] PASSED                             [ 50%]
test_parametrize.py::test_add[-1-1-0] PASSED                            [ 75%]
test_parametrize.py::test_add[3.14-2.86-6.0] PASSED                     [100%]

============================== 4 passed in 0.07s ===============================

从上述结果可以看出,使用parametrize()函数可以方便地对测试用例进行数据驱动。通过传入不同的参数值,可以减少代码重复,提高测试用例的可维护性和可扩展性。同时,使用parametrize()函数还能使测试用例更加清晰,易于理解。