ddt数据驱动 自动化测试 四种场景讲解

概述:

    自动化测试中,需要通过数据驱动来达到测试目的,比如验证登录功能,整个公司有100人,并且HR部门结果是动态变更的,每个用户的密码也是动态的。这时候可以使用动态的用户表作为参数传入。下面的例子是简化版本,没有贴出完整的python脚本。

Conditions:

    1、需要导入ddt第三方库from ddt import ddt, data, file_data, unpack

    2、使用unittest + python作为自动化测试框架


场景1:单个数据

    @ddt

    classMoveToABCTest(unittest.TestCase):

        @data("AAAA-2019080900504")

        def test_s1_movetoABC(self,item):

                #item会遍历data中的实际值,如本例的"AAAA-2019080900504"

                print(item)

注意:类上的装饰器(注解)ddt,不要忘记

场景2:多个数据

    @ddt

    class MoveToABCTest(unittest.TestCase):

        @data("AAAA-2019080900504","BBBB-2019080900505")

        def test_s1_movetoABC(self,item):

                #item会遍历data中的实际值,如本例的"AAAA-2019080900504","BBBB-2019080900505"

                print(item)


场景3:组合数据

    @ddt

    class MoveToABCTest(unittest.TestCase):

        @data(("zhangsan","123456"),("wangwu","123456"))

        @unpack

        def test_s1_openhomepage(self,username,password):

                #username、password两个形参分别对应data中的数据,如("zhangsan","123456"),然后遍历之

                print(username)

                print(password)

注意:测试方法中的装饰器(注解)unpack,不要忘记


场景4:引入外部文件

源数据文件data.yml

[{

    "data":{

        "yearmonth":"2019-10",

        "code":"11111",

        "code2":"AAAAA"

    }

},

    {

    "data":{

        "yearmonth":"2019-10",

        "code":"22222",

        "code2":"BBBBB"

    }

}

]

测试代码:

    @ddt

    class MoveToAAATest(unittest.TestCase):

        @file_data("E:\project\python\data\getBudget2.yml")

        @unpack

        def test_s2_getByOneDate(self,**kwargs):

                #获取数据,如requests.post,可以直接将data传入

                data= kwargs.get("data")

                print(data)

你可能感兴趣的:(ddt数据驱动 自动化测试 四种场景讲解)