无论什么自动化,都会需要参数化。unittest可以通过ddt来完成参数化,那么pytest通过什么呢?
parametrize
pytest中自带的装饰器parametrize可以来实现测试用例的参数化功能。
使用方法
通过下方装饰器,使用在需要传入参数的case中。用例传参中的值和装饰器传入的参数值一致。
@pytest.mark.parametrize('参数化名称',参数化值)
安静举一个登录传参的例子。
import pytest
# 登录参数
data = [('anjing', 'anjing_pwd'), ('test', 'test_pwd'), ('admin', 'admin_pwd')]
class Test_01:
# 通过parametrize进行参数化
@pytest.mark.parametrize('user, pwd', data)
def test_01(self, user,pwd):
print('---用例01---')
print('登录的用户名:%s' % user)
print('登录的密码:%s' % pwd)
def test_02(self):
print('---用例02---')
if __name__ == '__main__':
pytest.main(['-vs'])
通过直接结果可以看出来,test_01一共执行了3次。每次都是不同的参数信息。
自定义参数信息
在自动化中每个参数化中的参数都有不同的意义,可以进行备注参数信息。这样在执行后更加清楚地知道我们每个参数的内容。这里通过parametrize的参数ids方法进行备注参数信息。注意:备注的参数信息一定要和参数数量保持一致。