zoukankan      html  css  js  c++  java
  • DDT实现数据驱动

    1.DDT是什么?

      DDT:Data driver test,实现用例数据的分离

         主要结合关键字驱动来实现数据分析

    2.DDT实现数据驱动

      DDT数据安装:pip install ddt

      常用模块:ddt(声明ddt调用),data(数据传参),unpack(数据解包),file_data(读取json、yaml文件)

      ddt传参规则:

    1. 需要几个参数,则传递几个内容
    2. 参数解析与形参是一一对应关系

      代码示例:

    from ddt import ddt,data,unpack
    import unittest

    @ddt
    class Demo_test(unittest.TestCase):
    def setUp(self) -> None:
    '''前置条件'''
    pass
    def tearDown(self) -> None:
    '''后置条件'''
    pass
    @data(['大王','二王','三王'])
    @unpack
    def test_1(self,name,name1,name2):
    print(name)
    print(name1)
    print(name2)

    if __name__ == '__main__':
    unittest.main()
    运行结果:

    Ran 1 test in 0.003s

    OK
    大王
    二王
    三王

    进程已结束,退出代码 0



    方法2:通过读取file文件来实现数据驱动传参
    file.txt文件内容如下:
    大王,二王
    三王,
    -------------------------这是分割线--------------------------------------
    from ddt import ddt,data,unpack
    import unittest

    def read_file():
    list = []
    file = open('para.txt','r',encoding='utf-8')
    for line in file.readlines():
    list.append(line.strip(' ').split(','))
    return list
    @ddt
    class Test_demo(unittest.TestCase):

    def setUp(self) -> None:
    pass
    def tearDown(self) -> None:
    pass
    @data(read_file())
    def test_6(self,name):
    print(name)

    if __name__ == '__main__':
    unittest.main()
    运行结果:

    [['大王', '二王'], ['三王', '']]


    Ran 1 test in 0.003s

    OK

    进程已结束,退出代码 0



    3.DDT+Yaml实现数据驱动

      yaml安装:pip install pyyaml

      以下为yaml文件内容(以列表list形式):

      - 大王

      - 二王

      - 三王

      yaml文件内容(以字典形式):

      -

        name : 大王

        age : 18

      - 

        name : 二王

        age : 50

      -

        name : 三王

        age : 28

    -----------------------------------------这是分割线------------------------------------------------------------

    from ddt import ddt,data,unpack,file_data
    import unittest

    @ddt
    class Demo_test(unittest.TestCase):
    def setUp(self) -> None:
    '''前置条件'''
    pass
    def tearDown(self) -> None:
    '''后置条件'''
    pass
    @file_data('para.yaml')
    def test_4(self,**info):#**表示以字典的形式处理
    name = info.get('name')
    print(name)
    age = info.get('age')
    print(age)
    if __name__ == '__main__':
    unittest.main()

     运行结果:

    Ran 3 tests in 0.004s

    OK
    虚竹
    30
    666
    18
    chen
    88

    进程已结束,退出代码 0

     

  • 相关阅读:
    Object.keys方法之详解
    ackbone入门系列(5)路由
    backbone入门系列(4)集合
    backbone入门系列(3)视图
    backbone入门系列(2)模型
    backbone入门系列(1)基本组成部分
    $(document).ready(function(){ })、window.onload=function(){}与(function($){...})(jQuery)的对比和作用
    backbone笔记1,MVC
    用Object.prototype.toString()来检测对象的类型
    Python生成requirements.txt方法
  • 原文地址:https://www.cnblogs.com/Murraya/p/12527590.html
Copyright © 2011-2022 走看看