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()

  • 相关阅读:
    hdu 1203 I NEED A OFFER! (01背包)
    链式前向星
    hdu 3790 最短路问题 (spfa练手)
    hdu 2859 Phalanx (最大对称子矩阵)
    hdu 1160 FatMouse's Speed (最长上升子序列+打印路径)
    hdu 5289 Assignment (ST+二分)
    vue环境配置 vue-cli脚手架
    1、初始Java应用程序
    HTML5之Canvas画正方形
    布尔表达式
  • 原文地址:https://www.cnblogs.com/chendai21/p/8671380.html
Copyright © 2011-2022 走看看