zoukankan      html  css  js  c++  java
  • python学习笔记(30)——ddt

    1、ddt模块包含类的装饰器ddt和两个方法装饰器data

    • ddt.ddt:装饰类,也就是继承TestCase的类。

    • ddt.data:装饰测试方法,参数是一系列的值,用来传递参数

    • ddt.file_data:装饰测试方法,参数是文件名。文件可以是json或者yaml类型。

      注意,如果文件是以“.yml”或者".yaml"结尾,ddt会作为yaml类型处理,其他文件都会作为json文件处理。

      如果文件是列表,列表的值会作为测试用例参数,同时,会作为测试用例方法名后缀显示。

      如果文件是字典,字典的key会作为测试用例方法的后缀显示,字典的value会作为测试用例参数。

    • ddt.unpack:传递的是复杂的数据结构时使用,比如使用列表或者元组,添加unpack后,ddt会自动把元组或者列表对应到多个参数上。

    说明:

    @ddt 读取单个测试数据:-----装饰测试类,继承自TestCase的类

    @data()---装饰测试方法,拿到几个数据数据就执行几条用例(可以以“*变量”传入括号;也可以直接括号放入数值,逗号隔开)

        @data(a,b)    ------那么a和b各运行一次用例

        @data([a,d],[c,d])  -----如果没有unpack,那么[a,b]当成一个参数传入用例运行;如果有unpack,那么[a,b]被分解开,按照用例中的两个参数传递

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

    @unpack  ----解包,使用复杂的数据结构时,与此同时,测试方法的参数需要多个(参数的传值个数与解包后数量必须一一对应,“可以考虑用None”)

            如果test_data的值很多(大于5)不建议使用unpack,可以考虑直接列表传出,索引取值(要注意参数不对等的情况)

    #ddt+unittest 来进行数据的,第三方库
    #装饰器 自行了解
    import unittest
    from ddt import ddt,data,unpack
    test_data = [[1,3],[4,6]]
    
    @ddt  #装饰测试类,继承TestCase的类。
    class TestMath(unittest.TestCase):
        def setUp(self):
            print('start')
    
        @data(*test_data)  #  *只能脱一层外套, 传参数给测试用例
        @unpack   #针对拿到的每条数据按逗号拆分,拆分几个数据,在函数里就传几个参数
                  #使用unpack分解list或者tuple
        def test_print_data(self,a,b):  #传几个变量就用几个变量接收
            print("item:",a)
            print("item:",b)
    
        def tearDown(self):
            print('end')
    
    if __name__ == "__main__":
        unittest.main(verbosity=2)
  • 相关阅读:
    UVALive4727:jump
    UVALive
    UVA11795 Mega Man's Mission
    UVA4731:Cellular Network
    UVA11404:Palindromic Subsequence
    设计思路
    阅读计划
    上课未完成代码原因
    《人月神话》读后感
    《软件工程》第十一章总结
  • 原文地址:https://www.cnblogs.com/wuzm/p/11996705.html
Copyright © 2011-2022 走看看