零基础小白(十三) 串讲unittest/Pytest-数据驱动

接口自动化测试: https://www.jianshu.com/nb/49125734

引言

数据驱动方式很多,有Excel维护数据,yaml维护数据,今天讲解unittest(ddt)与Pytest(pytest.mark.parametrize())维护数据差异。

首先安装ddt pip install ddt

安装ddt.png

unittest数据驱动(ddt)

ddt(data driven test)数据驱动测试, 由外部数据集合来驱动测试用例,核心思想:数据和测试代码分离,应用场景:一组数据来执行相同的操作。

# -*- coding: utf-8 -*-
"""
@Time : 2021/2/28 20:50
@Auth : Yvon~早安阳光
@File :testUnittest
"""
import ddt,unittest

testData = [{'username':'陈三','password':'dugu2036','expected':'登录成功'},
            {'username':'李四','password':'dugu6666','expected':'登录失败'},
            {'username':'张二','password':'dugu8888','expected':'登录失败'},
            {'username':'高大','password':'dugu8888','expected':'登录失败'},
            ]

@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        print('开始登录测试')

    def tearDown(self):
        print('结束登录测试')

    @ddt.data(*testData)
    def test_login(self,test_info):
        print(test_info)

if __name__ == "__main__":
    unittest.main()
unittest+ddt 运行结果.png

Pytest数据驱动

在 Unittest 中,我们讲过使用 ddt 库配合 unittest 实现数据驱动。在 Pytest 中并不需要额外的库,通过 pytest.mark.parametrize()即可实现参数化。

# -*- coding: utf-8 -*-
"""
@Time : 2021/2/28 21:40
@Auth : Yvon~早安阳光
@File :testpytest
"""
import  pytest

testData = [{'username':'陈三','password':'dugu2036','expected':'登录成功'},
            {'username':'李四','password':'dugu6666','expected':'登录失败'},
            {'username':'张二','password':'dugu8888','expected':'登录失败'},
            {'username':'高大','password':'dugu8888','expected':'登录失败'},
            ]

def setup_function():
    print('开始登录测试')

def tearDown_function():
    print('结束登录测试')

@pytest.mark.parametrize('data',testData)
def test_login(data):
    print(data)

if __name__ == "__main__":
    pytest.main(['-s','testpytest.py'])
Pytest运行结果.png

推荐阅读更多精彩内容