zoukankan      html  css  js  c++  java
  • ddt数据驱动介绍和使用【多测师】

    一 ddt基础知识
    (数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。
    
    参考文档:https://ddt.readthedocs.io/en/latest/
    
    1.  ddt
    类装饰器,用于TestCase的子类test方法。
    
    2. 1  data
    方法装饰器(数据),包含与要提供给测试的值一样多的参数。
    
    2. 2  file_data
    方法装饰器(数据),将从JSON或YAML文件加载测试数据。
    只有以“.yml”和“.yaml”结尾的文件才会作为YAML文件加载。所有其他文件都作为JSON文件加载。
    
    3. unpack
    额外的装饰器,自动将元组和列表解压缩为多个参数,并将字典解压缩为多个关键字参数。
    二 ddt在自动化测试中的运用
    (1)单个参数(data)
    
    import unittest
    from ddt import ddt,data,unpack
    
    #需要测试的代码
    def add(a):
        return (a+1)
    
    #设置值
    data1=[{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2},{'a':1,'b':2}]
    
    #使用ddt对被测试代码进行批量测试
    @ddt
    class TestDDT(unittest.TestCase):
    
        @data(*data1)
        def test_add(self,data1):
            res=add(data1["a"])
            assert res==data1["b"]
    
    if __name__=='__main__':
        unittest.main()
    (2)多个参数(data)
    import unittest
    from ddt import ddt,data,unpack
    
    def add2(a,b):
        return (a+b)
    
    data2=[[{'a':1,'b':1},2],[{'a':1,'b':2},3]]
    
    @ddt
    class TestDDT(unittest.TestCase):
    
        @data(*data2)
        @unpack
        def test_add2(self, x,y):
            res = add2(x["a"],x["b"])
            print(res)
            assert res == y
    
    
    if __name__=='__main__':
        unittest.main()
    (3)测试文件(file_data.json)
    test_data.json
    
    {
      "test1":{"a":1,"b":1},
      "test2":{"a":2,"b":2}
    }
    
    testcase.py 
    import unittest
    from ddt import ddt,file_data
    
    def add(a,b):
        return a+b
    
    @ddt
    class TestCase(unittest.TestCase):
    
        @file_data('test_data.json')
        def test_add1(self,a,b):
            r=add(a,b)
            print(r)
    
    if __name__=='__main__':
        unittest.main()
  • 相关阅读:
    贪心法之活动安排问题
    动态规划算法之最优二叉搜索树
    动态规划之最大字段和问题
    动态规划算法之图像压缩问题
    动态规划算法之0-1背包问题
    动态规划算法之投资问题
    平面点集的凸包问题
    动态规划(DP)之多边形游戏问题
    凸多边形最优三角划分
    最长公共子序列问题
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110153.html
Copyright © 2011-2022 走看看