Pytest的参数化测试
概念
Pytest中有一个装饰器,可以通过它来实现,多组输入数据驱动同一测试逻辑,避免重复编写相似的测试代码,提高测试覆盖率和代码简洁性
这个就是@pytest.mark.parametrize
一、基础用法
import pytest
@pytest.mark.parametrize("参数名", 数据集合)
def test_name(参数名):
# 测试逻辑
以上是一个简易的demo结构,在@pytest.mark.parametrize
中写入参数名以及对应的数据集合后,会在test_name这个函数里进行执行。
- 参数名:字符串形式,多个参数用逗号分隔(如 “a,b”)
- 数据集合:可迭代对象(列表、元组等),每个元素为一组测试数据
二、参数化使用场景
场景1:单参数多值场景
需求:验证字符串转换int类型是否符合期待值
@pytest.mark.parametrize("input_str, expected", [
("123", 123),
("-5", -5),
("0", 0),
("abc", pytest.raises(ValueError)) # 验证异常
])
def test_string_to_int(input_str, expected):
if isinstance(expected, int):
as