接口自动化测试: https://www.jianshu.com/nb/49125734
引言
数据驱动方式很多,有Excel维护数据,yaml维护数据,今天讲解unittest(ddt)与Pytest(pytest.mark.parametrize())维护数据差异。
首先安装ddt pip install ddt
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()
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'])