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])]) 进行参数化

第一种方式:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/4/6 11:37
# @File    : test_class.py
import pytest


class TestApi:

    def test_01_jame(self):
        print('\n测试JAME')

    @pytest.mark.parametrize('args', ['张三', '李四', '王五'])
    def test_02_lucy(self, args):
        print('\n测试Lucy')
        print('---------'+str(args))


if __name__ == '__main__':
    pytest.main(['-vs', '--html=../report/report.html'])

运行结果 :

testcase/test_mark.py::TestApi::test_01_jame
测试JAME
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[\u5f20\u4e09]
测试Lucy
---------张三
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[\u674e\u56db]
测试Lucy
---------李四
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[\u738b\u4e94]
测试Lucy
---------王五
PASSED

第二种方式:跟unittest的ddt里边的@unpack解包一样

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/4/6 11:37
# @File    : test_class.py
import pytest


class TestApi:

    def test_01_jame(self):
        print('\n测试JAME')

    @pytest.mark.parametrize('name,age', [['小明', '18'], ['王林', '16']])
    def test_02_lucy(self, name, age):
        print('\n测试Lucy')
        print(name, age)


if __name__ == '__main__':
    pytest.main(['-vs', '--html=../report/report.html'])
testcase/test_mark.py::TestApi::test_01_jame
测试JAME
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[\u5c0f\u660e-18]
测试Lucy
小明 18
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[\u738b\u6797-16]
测试Lucy
王林 16
PASSED

使用另一种方式:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/4/6 11:37
# @File    : test_class.py
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'])

运行结果:

testcase/test_mark.py::TestApi::test_01_jame
测试JAME
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[args0]
测试Lucy
['小明', '18']
PASSED
testcase/test_mark.py::TestApi::test_02_lucy[args1]
测试Lucy
['王林', '16']
PASSED

 

你可能感兴趣的:(pytest)