Pytest.mark.parametrize()基本用法

发布时间 2023-07-19 09:24:34作者: 乐乐乐乐乐乐樂

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'])