美文网首页
Unittest + DDT

Unittest + DDT

作者: 桑鱼nicoo | 来源:发表于2020-05-03 18:07 被阅读0次
    1 安装 DDT
    $ pip3 install ddt
    
    2 @data 装饰器

    2.1 按照一个参数传递给测试用例

    import unittest
    
    from ddt import ddt, data, unpack
    
    
    @ddt
    class DataDrivenDDT(unittest.TestCase):
        @data('Alibaba')
        def test_data(self, testdata):
            print(testdata)
    
    
    if __name__ == '__main__':
        unittest.main()
    

    2.2 @data(a,b) ,data里面的参数按顺序传入到用例参数中每个参数执行一次

    import unittest
    
    from ddt import ddt, data, unpack
    
    @ddt
    class DataDrivenDDT(unittest.TestCase):
        @data('Alibaba', 'Tencent')
        def test_data(self, testdata):
            print(testdata)
    
    
    if __name__ == '__main__':
        unittest.main()
    

    2.3 data中含有多个数据,以元组,列表,字典等数据

    import unittest
    
    from ddt import ddt, data, unpack
    
    
    @ddt
    class DataDrivenDDT(unittest.TestCase):
        @data(['Alibaba', 'Tencent'])
        def test_data(self, testdata, a):
            print(testdata, a)
    
    
    if __name__ == '__main__':
        unittest.main()
    
    3 @unpack 装饰器

    data 包含数组等,使用 @unpack 分解数据

    import unittest
    
    from ddt import ddt, data, unpack
    
    
    @ddt
    class DataDrivenDDT(unittest.TestCase):
        @data(['Alibaba', 'Tencent', '1'], ['Alibaba1', 'Tencent1', '2'])
        @unpack
        def test_data(self, testdataa, a, b):
            print(testdataa, a, b)
    
    
    if __name__ == '__main__':
        unittest.main()
    
    4 @file_data(filename) 装饰器

    可以从json或者yaml中获取测试数据

    先创建一个 data.yaml 文件

    lis:
     - Cat
     - Dog
     - Goldfish
    
    lis1:
     - Cat1
     - Dog1
     - Goldfish1
    

    在测试用例中使用 data.yml 数据源

    import unittest
    
    from ddt import ddt, data, unpack, file_data
    
    
        @file_data('data.yaml')
        def test_yamldata(self, value):
            print(value)
    
    
    if __name__ == '__main__':
        unittest.main()
    

    引用 .json 格式的文件与 .yaml 相同,只是再使用时在 @file_data() 引用 json 文件就可以。这里就不再赘述了。

    相关文章

      网友评论

          本文标题:Unittest + DDT

          本文链接:https://www.haomeiwen.com/subject/hzodghtx.html