UnitTest----UnitTest自动化测试框架结合数据驱动(DDT)应用实践
  TEZNKK3IfmPf 2023年11月14日 14 0

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个用例,这就是数据驱动,适合用于测试多组数据合法性的场景,比如接口测试中测试各个参数是否有合法校验的时候就非常适合采用数据驱动测试的方法

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

TEZNKK3IfmPf