python之ddt模式随记

ddt 是第三方模块,需安装, pip install ddt

DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。

@data(a,b)

a和b各运行一次用例,该方法会调用2次

@data([a,d],[c,d])

如果没有@unpack,那么[a,b]当成一个参数传入用例运行

如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递

1、首先安装ddt

$>pip install ddt

由于已经安装过了,所以提示为下面的,可以忽略

 

2、安装完毕之后,可以配合unittest来实操一下,具体看例子。

 

import ddt
import unittest
## 定义任意的参数,list,dict,str,tuple等等
t_list = [1,2]
t_dict = {"a":"a","b":"b"}
t_str = 'test_string'
t_tuple = (1,2)

@ddt.ddt
class Test(unittest.TestCase):

    def setUp(self):
        print('start')
    ##这个仅有一个参数,将t_list赋值给data,打印
    @ddt.data(t_list)
    def test_a(self,data):
        print(data)

    ## 这个有多个参数传入时,有一个函数接受
    @ddt.data(t_list,t_dict,t_str,t_tuple)
    def test_b(self,data):
        print(data)

    ## 这个有多个参数传入,有多个函数接收
    @ddt.data(t_list,t_dict,t_str,t_tuple)
    def test_c(self,a,b,c,d):
        print(a)
        print(b)
        print(c)
        print(d)
if __name__ == '__main__':
    unittest.main()

 

  结果如下:

 

由上可以看出,第一个,第二个函数执行没有问题,第三个函数执行报错了。可以得出如下

---可以传入多个类型的参数,可以接受多个类型

---可以同时传入多个类型的参数,分别传入,每个参数都会执行一次测试函数,作为一个整体传给测试函数。

 

3、那么如果我们单个传入参数的内容有很多,需要分解一下来执行呢?这个时候就要用到unpack了,如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import ddt

import unittest

## 定义任意的参数,list,dict,str,tuple等等

t_dict = {"a":'a',"b":"b","c":"c"}

 

@ddt.ddt

class Test(unittest.TestCase):

 

    def setUp(self):

        print('start')

 

    ##这里加了unpack,分别给传入对应参数

    @ddt.data(t_dict)

    @ddt.unpack

    def test_a(self,a,b,c):

        print(a)

        print(b)

        print(c)

 

    ##这里没有加unpack,分别对应参数

    @ddt.data(t_dict)

    def test_b(self,a,b,c):

        print(a)

        print(b)

        print(c)

 

if __name__ == '__main__':

    unittest.main()

  结果如下:

由上,我们可以得到,unpack的用法

以上就是ddt 的学习总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值