Pytest.mark.parametrize()基本用法
@pytest.mark.parametrize()基本用法
数据驱动:就是把我们测试用例的数据放到excel,yaml,csv,mysql,然后通过去改变数据达到改变测试用例的执行结果。
@pytest.mark.parametrize(args_name,args_value)
args_name :参数名,字符串,多个参数中间用逗号隔开
args_value:参数值(列表,元组,字典列表,字典元组),有多个值用例就会执行多少次,是list,多组数据用元组类型,传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
例如:
1.传一个参数@pytest.mark.parametrize('参数名',list)进行参数化
2.传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
方式一
# -*- coding: utf-8 -*-
import pytest
class TestApi:
def test_01_jame(self):
print('\n测试Jame')
@pytest.mark.parametrize('args_name',['小三','王五','李德','王麻子'])
def test_02_lucy(self,args_name):
print('\n测试lucy')
print('---------------------------'+str(args_name))
if __name__ == '__main__':
pytest.main(['-vs','--html==./ReportTest.html'])
方式二
import pytest
class TestApi:
def test_01_jame(self):
print('\n测试JAME')
@pytest.mark.parametrize('args', [['小明', '18'], ['王林', '16']])
def test_02_lucy(self, args):
print('\n测试Lucy')
print(args)
if __name__ == '__main__':
pytest.main(['-vs', '--html=../report/report.html'])