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()
  • 相关阅读:
    Hubble.net 值得纪念的一天
    Hubble.net 0.5 版本开发完成
    计算任意数值的阶乘
    Hubble.net 建表语句 Create Table
    Linq to SQL 插入数据时的一个问题
    盘古分词中文人名识别算法介绍
    盘古分词功能简介
    最长不完全匹配子串频率计算eaglet 的解法
    背包分组问题的解法
    SharePoint 2010与2007的区别 配置基于表单的身份认证
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110153.html
Copyright © 2011-2022 走看看