自动化测试之 pytest 的使用03

自动化测试之 pytest 的使用031.6 使用parametrize实现参数化1.7 多次使用parametrize1.8 @pytest.fixture 与 @pytest.mark.parametrize 结合1.9 数据驱动-pytest 结合yaml2.0 多线程并发与分布式执行2.1 Pytest结合allure 生成测试报告2.2 Unknown pytest.mark.**异常处理1.6 使用parametrize实现参数化parametrize(argsnames , argsval
摘要由CSDN通过智能技术生成

1.6 使用parametrize实现参数化

parametrize(argsnames , argsvalues)
主要参数说明:
argsnames :参数名,是个字符串,如中间用逗号分隔则表示为多个参数名。
argsvalues :参数值,参数组成的列表,列表中有几个元素,就会生成几条用例。

使用方法:
使用 @pytest.mark.paramtrize(‘data’, param) 装饰测试方法, 将值param传给data, 测试用例中就可以使用data.

示例:

# 创建文件test_parametrize.py
import pytest

@pytest.mark.parametrize('x,y,z',[('tom','jack','rose'),(
						'嘿嘿','哈哈','嘻嘻')])
def test_case18(x,y,z):
    print('执行test_case18')
    print('get data:x={0},y={1},z={2}'.format(x,y,z))
    assert x!='smith'
    assert y!='呵呵'
if __name__== '__main__':
    args=['-s','-q','test_parametrize.py']
    pytest.main(args)

运行结果:
每个字符串有对应的值。
测试用例接收字符串参数,字符串参数个数要与列表中元素个数相同

执行test_case18
get data:x=tom,y=jack,z=rose
.执行test_case18
get data:x=嘿嘿,y=哈哈,z=嘻嘻
.
2 passed in 0.01s

1.7 多次使用parametrize

同一个测试用例同时添加多个 @pytest.mark.parametrize 装饰器, 多个 parametrize 的所有元素互相组合(类似笛卡儿乘积),生成大量测试用例。

场景:比如登录场景,用户名输入情况有 n 种,密码的输入情况有 m 种,希望验证用户名和密码,就会涉及到 n*m 种组合的测试用例,如果把这些数据一一的列出来,工作量巨大。pytest 提供了一种参数化的方式,将多组测试数据自动组合,生成大量的测试用例。

示例:
6个用户名,5个密码,共有30种不同的组合,可以通过装饰器完成这种组合测试。

@pytest.mark.parametrize('username',[
						'tom','smith','jack','lilei','danny','siri'])
@pytest.mark.parametrize('password',[
						'a123','aaab','1123','a11b','6325'])
def test_case19(username,password):
    print('\n 执行test_case19')
    print('用户名= {0},密码= {1}'.format(username,password))
    assert username != 'tom'
    assert password != 'aaab'
if __name__== '__main__':
    args=['-s','-q','test_parametrize.py']
    pytest.main(args)

运行结果:
通过20个用例,10个未通过。

 执行test_case19
用户名= tom,密码= a123
F
 执行test_case19
用户名= smith,密码= a123
.
 执行test_case19
用户名= jack,密码= a123
.
 执行test_case19
用户名= lilei,密码= a123
.
 执行test_case19
用户名= danny,密码= a123
.
 执行test_case19
用户名= siri,密码= a123
.
 执行test_case19
用户名= tom,密码= aaab
F
 执行test_case19
用户名= smith,密码= aaab
F
 执行test_case19
用户名= jack,密码= aaab
F
 执行test_case19
用户名= lilei,密码= aaab
F
 执行test_case19
用户名= danny,密码= aaab
F
 执行test_case19
用户名= siri,密码= aaab
F
 执行test_case19
用户名= tom,密码= 1123
F
 执行test_case19
用户名= smith,密码= 1123
.
 执行test_case19
用户名= jack,密码= 1123
.
 执行test_case19
用户名= lilei,密码= 1123
.
 执行test_case19
用户名= danny,密码= 1123
.
 执行test_case19
用户名= siri,密码= 1123
.
 执行test_case19
用户名= tom,密码= a11b
F
 执行test_case19
用户名= smith,密码= a11b
.
 执行test_case19
用户名= jack,密码= a11b
.
 执行test_case19
用户名= lilei,密码= a11b
.
 执行test_case19
用户名= danny,密码= a11b
.
 执行test_case19
用户名= siri,密码= a11b
.
 执行test_case19
用户名= tom,密码= 6325
F
 执行test_case19
用户名= smith,密码= 6325
.
 执行test_case19
用户名= jack,密码= 6325
.
 执行test_case19
用户名= lilei,密码= 6325
.
 执行test_case19
用户名= danny,密码= 6325
.
 执行test_case19
用户名= siri,密码= 6325
.
================================== FAILURES ===================================
____________________________ test_case19[a123-tom] ____________________________

username = 'tom', password = 'a123'

    @pytest.mark
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值