1、安装ddt
pip install ddt
2.使用方式
首先导入ddt,然后在测试类上使用@ddt.ddt装饰,测试方法使用@ddt.data()装饰,data里面填写参数即可,具体使用如下
2.1、测试函数有一个参数
代码如下:
import unittest
import ddt
@ddt.ddt
class TestDemo01(unittest.TestCase):
@ddt.data(0, 1, 2, 3, 4, 5, -1, -2, -3, -4, -5)
def test_01(self, x):
print(x)
if __name__ == "__main__":
unittest.main()
执行结果如下:
0
1
2
3
4
5
-1
-2
-3
-4
-5
Ran 11 tests in 0.004s
OK
2.2 、测试函数有多个参数,比如有两个参数
需要在测试函数上使用一个@ddt.unpack来装饰,参数使用元组形式,代码如下:
import unittest
import ddt
@ddt.ddt
class TestDemo01(unittest.TestCase):
@ddt.data((0, 1), (2, 3), (4, 5), (-1, -2), (-3, -4))
@ddt.unpack
def test_01(self, x, y):
print(x)
print(y)
print("*************************")
if __name__ == "__main__":
unittest.main()
执行结果如下:
0
1
*************************
2
3
*************************
4
5
*************************
-1
-2
*************************
-3
-4
*************************
Ran 5 tests in 0.004s
OK
2.3、测试数据从yaml文件读取
例如在demo.yml文件中编写如下内容:
-
name: "redrose2100"
age: 33
-
name: "redrose2200"
age: 22
-
name: "redrose2300"
age: 25
在测试用例上使用@ddt.file_data()装饰器装饰,代码如下
import unittest
import ddt
@ddt.ddt
class TestDemo01(unittest.TestCase):
@ddt.file_data("demo.yml")
def test_01(self, **kwargs):
print(kwargs.get("name"))
print(kwargs.get("age"))
print("-------------------")
if __name__ == "__main__":
unittest.main()
执行结果如下:
redrose2100
33
-------------------
redrose2200
22
-------------------
redrose2300
25
-------------------
Ran 3 tests in 0.003s
OK
这里可以看到因为ymal文件中设置了三组数据,所以这里显示执行了3个用例,这就是数据驱动,适合用于测试多组数据合法性的场景,比如接口测试中测试各个参数是否有合法校验的时候就非常适合采用数据驱动测试的方法