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

  • 相关阅读:
    敏捷软件开发实践-Release Process/Release Plan(转)
    《敏捷软件开发-原则、方法与实践》-Robert C. Martin读书笔记(转)
    测试RESTful API利器-Postman
    backbone.js初探(转)
    JavaScript有关的10个怪癖和秘密(转)
    Restful Web Service初识
    JSTL标签库的使用
    JavaScript处理JSON
    绑定QQ登录 PHP OAuth详解(转)
    mysql if exist坑
  • 原文地址:https://www.cnblogs.com/dflblog/p/11363376.html
Copyright © 2020-2023  润新知