栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

@ddt使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

@ddt使用

数据驱动:

        指在自动化测试中处理测试数据的方式。通常测试数据与功能函数分离,存储在功能函数的外部位置。在自动化测试运行时,数据驱动框架会读取数据源中的数据,把数据作为参数传递到功能函数中,并会根据数据的条数多次运行同一个功能函数。

安装ddt:

        pip install ddt

ddt使用步骤:

        1、使用 @ddt 装饰你的测试类;

        2、使用 @data 或者 @file_data 装饰你需要数据驱动的测试方法;

        3、如一组测试数据有多个参数,则需 unpack,使用 @unpack 装饰你的测试方法。

        4、file_data 装饰器则从 JSON 或 YAML 文件加载测试数据。

ddt使用示例:

示例1:

import unittest
from ddt import ddt, data, unpack, file_data

from conifg import base_path

datas = [{"user": "admin", "psw": "123456", "result": "true"},
         {"user": "admin_001", "psw": "123456", "result": "true"},
         {"user": "admin_002", "psw": "123456", "result": "true"},
         {"user": "admin_003", "psw": "123456", "result": "true"},
         {"user": "admin_004", "psw": "123456", "result": "true"}, ]

data1 = {

    "test_data": [
        {
            "param1": 1,
            "param2": 2,
            "expect": 3
        },
        {
            "param1": 2,
            "param2": 3,
            "expect": 5
        },
        {
            "param1": 3,
            "param2": 4,
            "expect": 7
        }
    ]

}


@ddt
class Test(unittest.TestCase):
    # *data  (*的含义是解包的含义,通过* 解包出多条测试数据 )
    @data(*data1.get("test_data"))
    def test_1_demo(self, case):
        print(case)

    @data(*data1.get("test_data"))
    @unpack
    # @unpack
    # unpack表示,对于每一组数据,如果它的值是list或者tuple,那么就分拆成独立的参数。
    def test_2_demo(self, param1, param2, expect):
        print("param1:", param1, end=" ")
        print("param2:", param2, end=" ")
        print("expect:", expect, end=" ")


if __name__ == "__main__":
    unittest.main()






结果显示:

{'param1': 1, 'param2': 2, 'expect': 3}
{'param1': 2, 'param2': 3, 'expect': 5}
{'param1': 3, 'param2': 4, 'expect': 7}
param1: 1 param2: 2 expect: 3 param1: 2 param2: 3 expect: 5 param1: 3 param2: 4 expect: 7 

示例2:

import unittest
from ddt import ddt,data


@ddt
class Test(unittest.TestCase):
    # 如果是字典想获取 key 与 value 可以使用items()方法
    @data(*{"name":"zhangsan","age":12}.items())
    def test_aa(self, case):
        print(case)


if __name__ == "__main__":
    unittest.main()



显示结果:
('name', 'zhangsan')
('age', 12)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号