unittest使用ddt数据驱动
ddt使用
1.data装饰器
需要先将@ddt修饰在当前的测试类中
@data装饰器修饰在测试用例
查看源码可以看到,装饰器data接收一个元祖参数
代码:
@ddt
class Login(unittest.TestCase):
@data(1, 2, 3, 4)
def test_login(self, value):
print("\n***********用例执行***********")
print("value: {}".format(value))
执行结果:
2. unpack装饰器
修饰在用例上,用于解包,元祖、列表等有序对象,
如下:将每个元祖或者列表中的每个元素解包,在方法上接收对应数量的参数
@data((1, 2, 3), (5, 6, 7))
@unpack
def test_login(self, value1, value2, value3):
print('\n用例参数1: {}'.format(value1))
print('用例参数2: {}'.format(value2))
print('用例参数3: {}'.format(value3))
执行结果:
注:
字典虽然是无序对象,但是可以通过key映射获取对应的值,使用如下:
用例接收两个参数name, age就可以映射data上字典上的key对应的value
@data({"name": "张三", "age": 22},
{"name": "李四", "age": 25})
@unpack
def test_login(self, name, age):
print("\n***********用例执行***********")
print("name: {}".format(name))
print("age: {}".format(age))
执行结果:
3.file_data注解
3.1 读取yaml配置文件的方式,作为数据驱动
代码:
@file_data("./data.yaml")
@unpack
def test_login(self, name, age):
print("\n***********用例执行***********")
print("name: {}".format(name))
print("age: {}".format(age))
data.yaml配置文件:
yaml语法学习
- #- 表示数据为列表,需要有基本yaml语法知识
name: 张三
age: 18
-
name: 李四
age: 15
结果:
3.2 读取json配置文件的方式,作为数据驱动
代码:
@ddt
class Login(unittest.TestCase):
@file_data("./data.json")
@unpack
def test_login(self, name, age):
print("\n***********用例执行***********")
print("name: {}".format(name))
print("age: {}".format(age))
json配置文件:
json语法学习
{
"test1": {
"name": "张三",
"age": 18
},
"test2": {
"name": "李四",
"age": 22
}
}
结果: