zoukankan      html  css  js  c++  java
  • 数据驱动 --ddt

    import unittest
    
    from ddt import ddt,data,unpack
    
    test_data = [[1,2],[3,4]]
    
    @ddt   #装饰类
    class TestMethod(unittest.TestCase):
    
        @data(test_data) #装饰方法
        def test_print(self,a):
            print(a)

    返回结果为:

    Ran 1 test in 0.001s
    
    OK
    [[1, 2], [3, 4]]

     

    ddt 是第三方模块,需安装, pip install ddt

    DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

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

    @data(a,b)

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

    传入的数据参数前加上*号,则是拆分,最多只能加一个*,多个*号无用

    import unittest
    
    from ddt import ddt,data,unpack
    
    test_data = [[1,2],[3,4]]
    
    @ddt
    class TestMethod(unittest.TestCase):
    
        @data(*test_data)
        def test_print(self,a):
            print(a)

    返回结果:

    [1, 2]
    [3, 4]
    
    
    Ran 2 tests in 0.000s
    
    OK

    unpack是对拆分的每个元素以逗号进行再次拆分,方法的动态传参的个数要相对应

    import unittest
    
    from ddt import ddt,data,unpack
    
    test_data = [[1,2],[3,4]]
    
    @ddt
    class TestMethod(unittest.TestCase):
    
        @data(*test_data)
        @unpack
        def test_print(self,a,b):
            print(a)
            print(b)

    返回结果:

    Ran 2 tests in 0.002s
    
    OK
    1
    2
    3
    4

    如果unpack要拆分的元素是列表,且列表内的元素个数不一致,如下:

    import unittest
    
    from ddt import ddt,data,unpack
    
    test_data = [[1,2],[3,4,5]]
    
    @ddt
    class TestMethod(unittest.TestCase):
    
        @data(*test_data)
        @unpack
        def test_print(self,a,b,c=None):
            print(a)
            print(b)
            print(c)

    返回结果:

    1
    2
    None
    3
    4
    5
    
    
    Ran 2 tests in 0.001s
    
    OK

    如果unpack拆分是字典,方法的动态参数必须是字典的key,否则会报错

    import unittest
    
    from ddt import ddt,data,unpack
    
    test_data = [{"no":1,"name":"lili"},
                 {"no":2,"name":"godan"}]
    
    @ddt
    class TestMethod(unittest.TestCase):
    
        @data(*test_data)
        @unpack
        def test_print(self,no,name):
            print(no)
            print(name)

    返回结果:

    Ran 2 tests in 0.001s
    
    OK
    1
    lili
    2
    godan
    
    进程已结束,退出代码 0
  • 相关阅读:
    leetcode python翻转字符串里的单词
    leetcode python快乐数
    Usb gadget驱动
    cnblogs的第一篇
    python返回函数+匿名函数+装饰器+偏函数
    1144. 递减元素使数组呈锯齿状
    208. Implement Trie (Prefix Tree)
    3. Longest Substring Without Repeating Characters
    5. Longest Palindromic Substring :manacher
    929. 独特的电子邮件地址
  • 原文地址:https://www.cnblogs.com/lexus168/p/12703236.html
Copyright © 2011-2022 走看看