数据驱动:
指在自动化测试中处理测试数据的方式。通常测试数据与功能函数分离,存储在功能函数的外部位置。在自动化测试运行时,数据驱动框架会读取数据源中的数据,把数据作为参数传递到功能函数中,并会根据数据的条数多次运行同一个功能函数。
安装ddt:
pip install ddt
ddt使用步骤:
1、使用 @ddt 装饰你的测试类;
2、使用 @data 或者 @file_data 装饰你需要数据驱动的测试方法;
3、如一组测试数据有多个参数,则需 unpack,使用 @unpack 装饰你的测试方法。
4、file_data 装饰器则从 JSON 或 YAML 文件加载测试数据。
ddt使用示例:
示例1:
import unittest
from ddt import ddt, data, unpack, file_data
from conifg import base_path
datas = [{"user": "admin", "psw": "123456", "result": "true"},
{"user": "admin_001", "psw": "123456", "result": "true"},
{"user": "admin_002", "psw": "123456", "result": "true"},
{"user": "admin_003", "psw": "123456", "result": "true"},
{"user": "admin_004", "psw": "123456", "result": "true"}, ]
data1 = {
"test_data": [
{
"param1": 1,
"param2": 2,
"expect": 3
},
{
"param1": 2,
"param2": 3,
"expect": 5
},
{
"param1": 3,
"param2": 4,
"expect": 7
}
]
}
@ddt
class Test(unittest.TestCase):
# *data (*的含义是解包的含义,通过* 解包出多条测试数据 )
@data(*data1.get("test_data"))
def test_1_demo(self, case):
print(case)
@data(*data1.get("test_data"))
@unpack
# @unpack
# unpack表示,对于每一组数据,如果它的值是list或者tuple,那么就分拆成独立的参数。
def test_2_demo(self, param1, param2, expect):
print("param1:", param1, end=" ")
print("param2:", param2, end=" ")
print("expect:", expect, end=" ")
if __name__ == "__main__":
unittest.main()
结果显示:
{'param1': 1, 'param2': 2, 'expect': 3}
{'param1': 2, 'param2': 3, 'expect': 5}
{'param1': 3, 'param2': 4, 'expect': 7}
param1: 1 param2: 2 expect: 3 param1: 2 param2: 3 expect: 5 param1: 3 param2: 4 expect: 7
示例2:
import unittest
from ddt import ddt,data
@ddt
class Test(unittest.TestCase):
# 如果是字典想获取 key 与 value 可以使用items()方法
@data(*{"name":"zhangsan","age":12}.items())
def test_aa(self, case):
print(case)
if __name__ == "__main__":
unittest.main()
显示结果:
('name', 'zhangsan')
('age', 12)



