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

     

  • 相关阅读:
    【Hadoop】MapReduce自定义分区Partition输出各运营商的手机号码
    【Hadoop】Hadoop的数据压缩方式
    【Java】生成随机的手机号码并输出到文件
    【Java】递归删除目录以及文件
    【Hadoop】单机、伪分布式、完全分布式集群搭建
    【Linux】常用基础命令
    【Web】jquery合并单元格
    【PHP】PHPStorm中文乱码解决方式
    【DataBase】mysql连接错误:Cannot get hostname for your address
    【.NET】Browser Link: Failed to deserialize JSON in Browser Link call
  • 原文地址:https://www.cnblogs.com/Murraya/p/12527590.html
Copyright © 2011-2022 走看看