Pytest08-数据参数化parametrize

本文介绍了Pytest中数据参数化的功能,包括单参数、多参数和通过函数获取参数值的用法,并提供了代码示例。通过这些示例,读者可以学习如何在测试中高效地进行参数化测试。

Pytest08-数据参数化parametrize

高清B站视频链接

Pytest之数据参数化

单参数、多参数、函数数据参数化

方法:
parametrize(argnames, argvalues, indirect=False, ids=None, scope=None)
常用参数:
argnames:参数名
argvalues:参数对应值,类型必须为list
当参数为一个时格式:[value]
当参数个数大于一个时,格式为:[(param_value1,param_value2…),(param_value1,param_value2…)]
使用方法:
@pytest.mark.parametrize(argnames,argvalues)
️ 参数值为N个,测试方法就会运行N次

代码案例

单参数

文件1:test_single_params.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest

@pytest.mark.parametrize('a',['aaa','bbb','ccc'])
def test(a):
    print(a)

if __name__ == '__main__':
    pytest.main(['-vs'])

多参数

文件2:test_multy_params.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest

@pytest.mark.parametrize('name,pwd,expect',[('fy','123456','登陆成功'),('2sx','123456','登陆失败'),('xc','123456','登陆成功')])
def test(name,pwd,expect):
    print(name)
    print(pwd)
    assert expect == '登陆成功'

if __name__ == '__main__':
    pytest.main(['-vs','test_multy_params.py'])

函数参数

文件03:test_func_params.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest

def get_excel():
    # 省略数据解析代码几十行
    return [('fy','123456','登陆成功'),('2sx','123456','登陆失败'),('xc','123456','登陆成功')]

@pytest.mark.parametrize('name,pwd,expect',get_excel())
def test(name,pwd,expect):
    print(name)
    print(pwd)
    assert expect == '登陆成功'

if __name__ == '__main__':
    pytest.main(['-vs','test_func_params.py'])

函数参数进阶

文件04:test_func02_params.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 作者:扶摇
import pytest

def get_excel():
    # 省略数据解析代码几十行
    return [('fy','123456','登陆成功'),('2sx','123456','登陆失败'),('xc','123456','登陆成功')]

@pytest.mark.parametrize('data',get_excel())
def test(data):
    print(data[0])
    print(data[1])
    assert data[2] == '登陆成功'

if __name__ == '__main__':
    pytest.main(['-vs','test_func02_params.py'])

测试技术交流请联系我
在这里插入图片描述
备注优快云扶摇

【学习软件测试/Python自动化测试技术/领取Python自动化测试学习路线图/简历优化】
视频链接:
课程服务介绍

自动化全栈学习路线图讲解

软件测试面试合集

Python编程刷题合集

Pytest入门到实战

Python接口自动化合集

PythonWeb自动化合集

性能测试合集

Jmeter接口自动化测试实战全集

2023GPT探索发现合集

2024Pytest合集

加微信(备注优快云扶摇)即可免费领取下面的自动化测试资料和一份软件测试面试宝典
在这里插入图片描述
在这里插入图片描述

pytest中的参数化装饰器parametrize可以用于为函数或类添加多个参数组合,生成多个测试用例。参数的组合是根据给定的参数值列表来生成的。 具体使用方式如下: 1. 使用装饰器@parametrize来标记需要参数化的测试函数或测试类。 2. 在@parametrize装饰器中,通过指定参数名和对应的参数值列表来定义参数组合。参数值列表可以是一个可迭代对象,例如列表或元组。 3. 当有多个参数需要参数化时,可以使用多个@parametrize装饰器,每个装饰器对应一个参数。 4. 最终生成的测试用例数量为各个参数值列表长度的乘积。 例如,如果有两个参数a和b,分别有两个和三个取值,那么最终生成的测试用例数量就是2*3=6。 示例代码如下: ```python import pytest data1 = [1, 2] data2 = ['a', 'b', 'c'] @pytest.mark.parametrize('test1', data1) @pytest.mark.parametrize('test2', data2) def test_param(test1, test2): print('\n测试数据:{}-{}'.format(test1, test2)) ``` 在上述示例中,test_param函数有两个参数test1和test2,它们分别可以取data1和data2中的值。最终生成的测试用例数量为2*3=6,每个用例中的参数取值为(1, 'a')、(1, 'b')、(1, 'c')、(2, 'a')、(2, 'b')、(2, 'c')。 另外,参数化装饰器还支持指定参数名,用来在测试用例中展示参数值的名称。例如: ```python import pytest data = [(1, 2, 3), (4, 5, 9)] @pytest.mark.parametrize('a, b, expect', data) def test_param(a, b, expect): print('\n测试数据:{} {}'.format(a, b)) assert a + b == expect ``` 在上述示例中,test_param函数有三个参数a、b和expect,它们分别可以取data中的三元组的值。最终生成的测试用例数量为2,每个用例中的参数取值为(1, 2, 3)和(4, 5, 9)。 通过使用参数化装饰器@parametrize,可以方便地生成多个测试用例,并且在测试报告中展示参数值的组合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python测试框架pytest(17)参数化parametrize](https://blog.youkuaiyun.com/wangmcn/article/details/120956918)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [pytestparametrize参数化](https://blog.youkuaiyun.com/ifling99/article/details/126236312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试老宅男扶摇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值