• 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的用法

  • 相关阅读:
    【BZOJ2553】[BeiJing2011] 禁忌(AC自动机+矩乘)
    自动生成logo的网址
    JS创建对象的方式有几种
    用nodejs和js写增删查模块
    JS一般般的网页重构可以使用Node.js做些什么(转)
    Javascript高级程序设计
    前端书籍小技巧
    【年终总结】2年计划还是要有的,万一实现了呢?(转自叶小钗)
    前端数据结构与算法系列(转)
    node前端自动化
  • 原文地址:https://www.cnblogs.com/dflblog/p/11363376.html
Copyright © 2020-2023  润新知