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()
  • 相关阅读:
    移动硬盘无法识别提示需要格式化的解决办法
    Cassandra 入门(资料收集)
    [转] NoSQL生态系统
    软件项目实施问题收集(LastUpdatedOn:20141117)
    Sql server 收缩日志
    关于重构需要了解的一些原则
    C#定时任务采用线程和队列实现
    [转]我是如何带领团队开发项目的
    ASP.NET MVC 多套皮肤解决方案
    Mysql 问题汇总(不断更新中...)
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110153.html
Copyright © 2011-2022 走看看