zoukankan      html  css  js  c++  java
  • 26.ddt

    DDT的使用

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

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

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

    @data(a,b)

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

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

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

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

    用法总结

    1、@ddt用装饰测试用例类,放在测试用例类定义上面

    2、@data用来测试用例,放在测试用例上

    3、@data括号里的参数用逗号分割,@data(1,2,3),被装饰的用例执行3次

    4、@data括号里的参数如果不是直接传,而是通过变量传的话,变量前需要加*分割变量

    test_data = (1,2,3) @data(*test_data)不然被装饰的用例只会执行一次

    5、@upack解压,当测试用例一次传入参数需要用unpack,

    test_data = ((1,2,3),(2,3,4))

    @data(*test_data) #*号按逗号分割参数,分割几个参数代表执行测试用例执行几次

    @unpack #测试用例需要传入3个参数需要将分割后的参数解压

    6#元祖或者列表中每个元素是测试用例一次传入参数,

    若有一条测试用例有多个参数,则需要对每个参数进行unpack,

    列表或者元素可以是元祖、列表、字典

    __author__ = 'Administrator'

    import unittest

    from ddt import ddt,data,unpack,file_data

    testData = (1,2,3)

    testData1 = [{"name":"yangyang","age":18},{"name":"chunchun","age":19}]

    @ddt#ddt类装饰器放在需要装饰的类前面

    class testClass(unittest.TestCase):

        def setUp(self):

            print("测试开始了")

        #1、data装饰器直接传值

        @data(1,2)#data函数装饰器放在需要装饰的函数前面,类似位置参数

        def test_case_1(self,a):

            print("测试用例1输出值",a)

        #2、data装饰器直接传值

        @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面,

        def test_case_2(self,a):

            print("测试用例2输出值",a)

        #3、data装饰器直接传值

        @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面

        @unpack

        def test_case_3(self,a,b):

            print("测试用例3输出值",a,b)

        #4、data装饰器变量传值,变量前面加*号,位置参数格式化

        @data(*testData)#data函数装饰器放在需要装饰的函数前面,

        def test_case_4(self,a):

            print("测试用例4输出值",a)

        #4、data装饰器变量传值,变量前面加*号,位置参数格式化

        @data(*testData1)#data函数装饰器放在需要装饰的函数前面,

        @unpack

        def test_case_5(self,name,age): #类似关键字参数

            print("测试用例5输出值",name,age)

        def tearDown(self):

            print("测试结束了")

    if __name__ == "__main__":

        unittest.main()

    __author__ = 'Ad__author__ = 'Administrator'import unittestfrom ddt import ddt,data,unpack,file_data
    testData = (1,2,3)testData1 = [{"name":"yangyang","age":18},{"name":"chunchun","age":19}]
    @ddt#ddt类装饰器放在需要装饰的类前面class testClass(unittest.TestCase):    def setUp(self):        print("测试开始了")    #1、data装饰器直接传值    @data(1,2)#data函数装饰器放在需要装饰的函数前面,类似位置参数    def test_case_1(self,a):        print("测试用例1输出值",a)
        #2、data装饰器直接传值    @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面,    def test_case_2(self,a):        print("测试用例2输出值",a)
        #3、data装饰器直接传值    @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面    @unpack    def test_case_3(self,a,b):        print("测试用例3输出值",a,b)
        #4、data装饰器变量传值,变量前面加*号,位置参数格式化    @data(*testData)#data函数装饰器放在需要装饰的函数前面,    def test_case_4(self,a):        print("测试用例4输出值",a)

        #4、data装饰器变量传值,变量前面加*号,位置参数格式化    @data(*testData1)#data函数装饰器放在需要装饰的函数前面,    @unpack    def test_case_5(self,name,age): #类似关键字参数        print("测试用例5输出值",name,age)    def tearDown(self):        print("测试结束了")
    if __name__ == "__main__":    unittest.main()ministrator'import unittestfrom ddt import ddt,data,unpack,file_data
    testData = (1,2,3)testData1 = [{"name":"yangyang","age":18},{"name":"chunchun","age":19}]
    @ddt#ddt类装饰器放在需要装饰的类前面class testClass(unittest.TestCase):    def setUp(self):        print("测试开始了")    #1、data装饰器直接传值    @data(1,2)#data函数装饰器放在需要装饰的函数前面,类似位置参数    def test_case_1(self,a):        print("测试用例1输出值",a)
        #2、data装饰器直接传值    @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面,    def test_case_2(self,a):        print("测试用例2输出值",a)
        #3、data装饰器直接传值    @data([1,2],[3,4])#data函数装饰器放在需要装饰的函数前面    @unpack    def test_case_3(self,a,b):        print("测试用例3输出值",a,b)
        #4、data装饰器变量传值,变量前面加*号,位置参数格式化    @data(*testData)#data函数装饰器放在需要装饰的函数前面,    def test_case_4(self,a):        print("测试用例4输出值",a)

        #4、data装饰器变量传值,变量前面加*号,位置参数格式化    @data(*testData1)#data函数装饰器放在需要装饰的函数前面,    @unpack    def test_case_5(self,name,age): #类似关键字参数        print("测试用例5输出值",name,age)    def tearDown(self):        print("测试结束了")
    if __name__ == "__main__":    unittest.main()

  • 相关阅读:
    Notes for GGX paper
    vsix dll缺失问题
    c# 引用其他工程问题
    Springboot+Maven
    http 带cookie值的Post请求(关联测试)
    http 带cookie值的get请求(关联测试)
    DefaultHttpClient 获取cookie信息
    HttpClient+ ResourceBundle接口配置优化
    Cookie和Session的区别
    moco框架——重定向
  • 原文地址:https://www.cnblogs.com/yangyangchunchun/p/10387020.html
Copyright © 2011-2022 走看看