python之ddt模式随记

时间:2019-08-16
本文章向大家介绍python之ddt模式随记,主要包括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了,如下

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 的学习总结

原文地址:https://www.cnblogs.com/dflblog/p/11363376.html