• python DDT读取excel测试数据


    ddt   结合单元测试一起用
    ddt(data.driven.test):数据驱动测试
    由外部数据集合来驱动测试用例
    核心的思想:数据和测试代码分离
     
    应用场景:一组数据来执行相同的操作
    当测试数据发生大量变化的情况下测试代码,(或者说测试用例)可以保持不变
     
    excel存储测试数据,ddt读取测试数据到 单元测试框架(测试用例中)-输出到html报告
     
    python.ddt框架
    安装:pip install ddt
     
    使用之前先导入ddt
    import ddt
     
    ddt结合单元测试来使用
    1.在测试类定义定义之前使用:@ddt.ddt
    2.在测试用例定义之前使用,@ddt.data(测试数据) 测试数据之间用逗号隔开
    3.在2的基础上定义测试用例时,参数接收2中的测试数据
     
    例:
    @ddt.ddt
    class Demo Test(unittest.TestCase):
             @ddt.data(2,3,4)
             def test_print(self,a)
                  print("简单调用@data查看输出的是什么?",a)
     
    例子
    import ddt
    import unittest
    @ddt.ddt
    class test_PersonInfo(unittest.TestCase):
        @classmethod
        def setUp(self):
            print("==========开始测试==========")
        @classmethod
        def tearDown(self):
            print("==========结束测试==========")
     
       @ddt.data(1,2,3,4)
        def test_print(self,a):
            print(a)
     
     
    ddt-data 数据
    一组数据之间用逗号隔开
    data的参数可以为如下几种
    1.一组数据中,每个数据为单个值
    2.一组数据中,每个数据为一个列表或者一个字典
    3.文件对象:jason,yaml
     
    一组数据中的数据为列表或者字典:
    @data([a,b],[c,d])
     
    如何从以上数据中获取到字典中每一项值
    @unpack
    若变量A=[{a:b,a1:b1},{c:d,c1:d1}]
    如何将变量A中的每一组元素作为测试数据
    @ddt.data(*A)
     
    import ddt
    import unittest
    @ddt.ddt
    class test_PersonInfo(unittest.TestCase):
        @classmethod
        def setUp(self):
            print("==========开始测试==========")
        @classmethod
        def tearDown(self):
            print("==========结束测试==========")
     
        @ddt.data([1,2],[3,4])
        def test_print(self,a):
    print(a)
    ==========开始测试==========
    [1, 2]
    ==========结束测试==========
    ==========开始测试==========
    [3, 4]
    ==========结束测试==========
     
            print(a[0])
    ==========开始测试==========
    1
    ==========结束测试==========
    ==========开始测试==========
    3
    ==========结束测试==========
     
      @ddt.data([1,2],[3,4])
        @ddt.unpack
        def test_print(self,a,b):
            print(a,b)
     
    ==========开始测试==========
    1 2
    ==========结束测试==========
    ==========开始测试==========
    3 4
    ==========结束测试==========
     
    @ddt.data([{"a":2,"b":3},{"c":4,"d":8},{"e":5,"f":7}])
        def test_print(self,a):
            print(a)
    ==========开始测试==========
    [{'a': 2, 'b': 3}, {'c': 4, 'd': 8}, {'e': 5, 'f': 7}]
    ==========结束测试==========
     
    @ddt.data(*datas)
        def test_print(self,datas):
            print(datas)
    ==========开始测试==========
    {'class': 'python2', 'name': 'xiaoshitou', 'id': '0001', 'sex': 'male'}
    ==========结束测试==========
    ==========开始测试==========
    {'class': 'python2', 'name': 'nuonuo', 'id': '0002', 'sex': 'female'}
    ==========结束测试==========
    ==========开始测试==========
    {'class': 'python2', 'name': 'fly', 'id': '0003', 'sex': 'male'}
    ==========结束测试==========
    ==========开始测试==========
    {'class': 'python2', 'name': 'haiyang', 'id': '0004', 'sex': 'male'}
    ==========结束测试==========
    ==========开始测试==========
    {'class': 'python2', 'name': 'shuangshuang', 'id': '0005', 'sex': 'female'}
    ==========结束测试==========
     
    dat-data数据
    数据为文件对象:Json yaml
    json格式里面必须为双引号“”,且必须为键值对,不存在纯列表格式,值作为测试数据
    {"name":"nick","gender":"male","age":29}
     
    @ddt.file_data(jason文件路径)
     
       @ddt.file_data(os.getcwd()+"/test.json")
        def test_json(self,data):
            print(data)
     
    ==========开始测试==========
    [1, 2, 3]
    ==========结束测试==========
    ==========开始测试==========
    python2
    ==========结束测试==========
    ==========开始测试==========
    male
    ==========结束测试==========
    ==========开始测试==========
    xiaoshitou
    ==========结束测试==========
    ==========开始测试==========
    0001
    ==========结束测试==========       
     

  • 相关阅读:
    服务器传输方式
    vs2010中设置环境变量方法
    乱语研发人员的安全感
    乱语研发人员的激情
    乱语员工发展之自由流动
    闲言碎语话心得什么时候轮到我
    一个企业没落,不是聪明人太多了,而是傻人太少了
    闲言碎语话心得凭什么是他(她)
    胡言乱语之客服人员
    选择指定表的字段名
  • 原文地址:https://www.cnblogs.com/nuonuozhou/p/8645129.html
Copyright © 2020-2023  润新知