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

     

  • 相关阅读:
    【译】第26节---配置一对多关系
    【译】第25节---配置一对一关系
    【译】第24节---Fluent API
    pycharm 更改创建文件默认路径和修改字体大小
    软件工程----自我介绍
    课堂作业---读取文件实现求数组中所有子数组和的最大值
    实现数组中连续子数组值和最大
    android-----实现不两个不同的activity的跳转和数据传递
    android------解决editText只输入一行和textView不显示过多的内容
    android-------实现底部导航的模板
  • 原文地址:https://www.cnblogs.com/Murraya/p/12527590.html
Copyright © 2011-2022 走看看