• 使用python第三方库Parameterized进行接口参数化测试


    说明:使用python自带的unittest单元测试框架进行接口参数化测试时,因unittest不具备参数化测试,所以需要借助Parameterized第三库进行测试。

    一、Parameterized安装命令

    pip install parameterized
    或使用国内豆瓣镜像源安装:pip install parameterized -i https://pypi.douban.com/simple

    二、Parameterized的作用

    可以进行大量数据的测试,分离测试数据和测试脚本
    一旦实现了参数化测试,那么后期调试测试用例时,可以不需要看代码,只需要修改测试数据即可。

    三、步骤

    1、准备参数化文件

    文件为JSON格式,内部数据格式为列表包含字典。如:
    [
    {“case_name”:“登录成功”, “request_body”:
    {“mobile”:“13800000002”, “password”:“123456”}, “response_code”:
    200, “success”: true, “code”: 10000, “message”:“操作成功!” }…
    {“case_name”:“手机号码为空”, “request_body”: {“mobile”:“”,
    “password”:“123456”}, “response_code”: 200, “success”: false,
    “code”: 20001, “message”:“用户名或密码错误” }
    ]

    2、编写读写文件的函数

    说明:python仅识别元组格式数据,需将JSON的字典数据转换成元组。

    # 读取登录数据文件的函数
    import json
    
    
    def read_data(filename):  # 形参filename为数据文件路径
        with open(filename, mode='r', encoding='utf8') as f:
            jsonData = json.load(f)  # 将读取的数据流f,转化为JSON格式文件,并定义变量接收
            result_list = []  # 定义空列表存放转化之后的数据
            for login_data in jsonData:
                result_list.append(tuple(login_data.values()))  # 将列表字典数据,转化为列表元组数据
    
            print(result_list)
    
    if __name__ == '__main__':
        filename = 'data/login.json'
        read_data(filename)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3、在测试文件中调用

    ① 导导入parameterized模块
    import parameterized
    ② 使用parameterized模块的expand功能加载数据关联数据
    在要参数化的测试用例上面,编写装饰器
    filename = app.BASE_DIR + “/data/login.json”
    @parameterized.parameterized.expand(read_data(filename))
    def test01_login(self): …
    ③ 关联需要接收read_data(filename))传入的数据
    注:接收数据时按顺序传入,且仅接收一级数据0。
    def test01_login(self, case_name, request_body, response_code, success, code, message): …
    在这里插入图片描述
    在这里插入图片描述
    查看运行结果:
    在这里插入图片描述

  • 相关阅读:
    正则 删除特定字符后面所有的元素(不区分大小写)
    Dubbo各种协议
    协议(网络协议)
    外汇天眼:什么是熊市和牛市?
    代码随想录笔记_链表_24两两交换链表中的节点
    ADSP-21489的开发详解:Norflash的编程和烧写
    【ARM 裸机】C 语言 led 驱动
    如何在机器学习中使用数据集编程
    如何上传服务器代码到GitHub上,并更新
    Vue2.7正式发布!代号为:Naruto(火影忍者),原生支持 Composition API +终于可以在Vue2项目中使用Vue3的新特性了,真香~
  • 原文地址:https://blog.csdn.net/MARKDD915/article/details/126368320