zoukankan      html  css  js  c++  java
  • Python 数据驱动ddt 使用

    准备工作: pip install ddt

    知识点:

    一,数据驱动和代码驱动:

    数据驱动的意思是  根据你提供的数据来测试的  比如 ATP框架 需要excel里面的测试用例

    代码驱动是必须得写代码 它才能测试 比如说unittest 

    二,使用数据驱动框架的意义:
    - 代码复用率高。同一测试逻辑编写一次,可以被多条测试数据复用,提高了测试代码的复用率,同时可以提高测试脚本的编写效率。
    - 异常排查效率高。测试框架依据测试数据,每条数据生成一条测试用例,用例执行过程相互隔离,在其中一条失败的情况下,不会影响其他的测试用例。

    -代码的可维护性高。清晰的测试框架,利于其他测试工程师阅读,提高了代码的可维护性。

    tips : 参数少的用yml挺好  参数多的,用json xx.json 格式  这种上下有依赖关系的 就写py文件  

    文件名.json的话是json文件里面要写json串

    yml每个接口都是独立运行的  

     DDT 使用

    DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据)

    只有yaml和yml结尾的文件以yaml形式上传,其他情况下默认为json

    通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据

    @data(a,b)

    那么a和b各运行一次用例

    @data([a,b],[c,d])

    如果没有unpack,那么[a,b]当成一个参数传入用例运行

    如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递

    @file_data(filename)

    对于json的文件,每一个json元素按照一个用例运行,可以依照python分解元组,列表或者字典的方式分解传入

    实例:

    import ddt
    import unittest
    # print(dir(ddt))

    @ddt.ddt
    class MyCase(unittest.TestCase):
    @ddt.data(1,2) #运行2次
    def testa(self,value):
    print(value)

    @ddt.data([1,2]) #运行1次
    def testb(self,value):
    print(value)

    @ddt.data([1,2],[3,4]) #不加unpack 会报错
    def testc(self,a,b):
    self.assertNotEqual(a,b)

    @ddt.data([1,2],[3,4]) #运行2次
    @ddt.unpack
    def testd(self,a,b):
    self.assertNotEqual(a,b)

    if __name__ == '__main__':
    unittest.main()

  • 相关阅读:
    linux tftp 服务
    AtomicInteger
    深入理解JVM(三)——垃圾收集策略具体解释
    Android 虚拟现实(virtual reality)入门指南
    Java千百问_05面向对象(005)_接口和抽象类有什么差别
    postman发送json格式的post请求
    什么是Session分布式共享
    如何设计一个单点登录系统(3)?
    如何设计一个单点登录系统(2)?
    如何设计一个单点登录系统(1)?
  • 原文地址:https://www.cnblogs.com/chendai21/p/8671380.html
Copyright © 2011-2022 走看看