• 多测师肖sir___ddt讲解(辅助框架)


    ddt数据驱动
    1、ddt定义:全称data-driver tests ,数据驱动测试,可以实现不同数据运行同一个测试用例。
    ddt本质是一个装饰器,一组数据一个场景
    主要核心:把业务逻辑装成关键字,在调用关键字

    2、为什么要使用ddt?
    提高代码的复用率
    例如:接口测试每个接口的传参不止一种情况,一般考虑正向场景,逆向场景等多种组合。
    所以在测试接口时候通常会编写多条case,而这些case除了参数不同外,并没有其他区别。

    3、ddt 的四种模式:
    (1)@ddt 引入装饰器
    (2)@data 导入数据
    (3) @unpack 拆分数据
    (4)@file_data 导入数据
    4、安装ddt
    pip install ddt
    在这里插入图片描述
    5、ddt实操:
    案例1:读取元组的数据

    import  unittest
    from ddt import  ddt,unpack,data,file_data #导入ddt四个模式
    @ddt #引入ddt装饰
    class  cms(unittest.TestCase):  #定义一个类,继承unittest.testcase
        @data(1,2,5,3,4,) #数据  (5条运行几次)
        def test1(self,a): #a用来接收data数据
            print(a)
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    案例2:读取列表中的数据

    import  unittest
    from ddt import  ddt,unpack,data,file_data #导入ddt四个模式
    @ddt #引入ddt装饰
    class  cms(unittest.TestCase):  #定义一个类,继承unittest.testcase
        # @data(1,2,5,3,4,) #数据  (5条运行几次)
        @data([1,2,3])
        def test1(self,a): #a用来接收data数据
            print(a)
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    案例3:读取列表中的字典

    import  unittest
    from ddt import  ddt,unpack,data,file_data #导入ddt四个模式
    @ddt #引入ddt装饰
    class  cms(unittest.TestCase):  #定义一个类,继承unittest.testcase
        # @data(1,2,5,3,4,) #数据  (5条运行几次)
        @data({'name':'zs','age':18})
        def test1(self,a): #a用来接收data数据
            print(a)
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    案例4:unpark

    import  unittest
    from ddt import  ddt,unpack,data,file_data #导入ddt四个模式
    @ddt #引入ddt装饰
    class  cms(unittest.TestCase):  #定义一个类,继承unittest.testcase
        # @data(1,2,5,3,4,) #数据  (5条运行几次)
        @data({'name':'zs','age':18},{'name':'zs1','age':20})
        @unpack
        def test1(self,name,age): #a用来接收data数据
            print(name,age)
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    案例5:

    import os
    import  unittest
    from ddt import  ddt,unpack,data,file_data #导入ddt四个模式
    @ddt #引入ddt装饰
    class  cms(unittest.TestCase):  #定义一个类,继承unittest.testcase
        # @data(1,2,5,3,4,) #数据  (5条运行几次)
        # @data({'name':'zs','age':18},{'name':'zs1','age':20})
        #     # @unpack
        # def  add(self,a,b):
        #     print(a+b)
        @file_data(r'D:\untitled3\abc.json')
        def test1(self,a,b): #a用来接收data数据
            print(a,b)
    if __name__ == '__main_':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    实时数据监控,三防平板在工业领域的应用解析
    【Linux】基础IO
    安全测试:文件上传漏洞检测
    2022TWS蓝牙耳机推荐,盘点600元真无线蓝牙耳机
    Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
    泡咖啡问题
    油封与O型圈相同吗?
    Python 星号的妙用 —— 灵活的序列解包
    Windows系统下安装Ubuntu系统(双系统)
    LCR 056.两数之和 IV
  • 原文地址:https://blog.csdn.net/m0_47403059/article/details/134269035