前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试之路 pytest接口自动化框架扩展-params数据解析

测试之路 pytest接口自动化框架扩展-params数据解析

作者头像
歪小王
发布2022-12-12 16:44:37
3300
发布2022-12-12 16:44:37
举报

测试之路 pytest接口自动化框架扩展-MS数据解析

哈喽大家好,上期内容介绍了一下数据分流的一个函数。可以理解为我们日常生活中的经理角色。用来分配任务。本期就先介绍他手下的一个小弟,小p(params解析函数)。废话不多,昊料开始~

开篇

上期我们在展示数据分流的函数中,判断了一下当前接口是否为get。在MeterSphere中,get的接口参数相对简单 在MeterSphere的json文件中。request下面有一个arguments的节点。该节点内部就记录的是params类型的参数。如下所示。

代码语言:javascript
复制
"arguments": [
    {
      "contentType": "text/plain",
      "enable": true,
      "file": false,
      "name": "name",
      "required": true,
      "type": "text",
      "urlEncode": false,
      "valid": true
    },
    {
      "contentType": "text/plain",
      "enable": true,
      "file": false,
      "name": "age",
      "required": false,
      "type": "text",
      "urlEncode": false,
      "valid": true
    },
    {
      "contentType": "text/plain",
      "enable": true,
      "file": false,
      "required": false,
      "type": "text",
      "urlEncode": false,
      "valid": false
    }
  ]

可以看到。这是一个字典嵌套列表嵌套字典的数据格式。字典中的每个元素都记录了该接口字段的详细信息。

解析

首先分析数据结构。

  • 在arguments下是一个列表嵌套字典的模式。所以我们首先遍历这个列表。拿到列表内的所有字典。
  • 拿到字典以后先要判断一下这个数据是不是正常数据。判断依据就是这个数据里面是否包含正常的字段。
  • 下一步就是解析这个参数里面是否包含大小值,在MeterSphere中,最大值和最小值是非必填的,如果操作人没有填写该值,我们就要给他一个默认的最大值和最小值
  • 做完上述步骤校验后,就可以将参数提取出来,存入一个模板中,最后将组织好的数据交给”经理”。
代码语言:javascript
复制
# 解析params类型参数.常用与get/delete/put
def get_arguments(data):
    field = {}
    for i in data:
        if "name" in i.keys():
            try:
                if ("min" and "max") in i:
                    par = {
                        i["name"]: {
                            "required": str(i["required"]).lower(),
                            "max": i["max"],
                            "min": i["min"],
                            "type": "string",
                            "description": i["description"] if "description" in i else ""
                        }
                    }
                    field.update(par)
                else:
                    par = {
                        i["name"]: {
                            "required": str(i["required"]).lower(),
                           # MAX_LENGTH、MIN_LENGTH写死的常量
                            "max": MAX_LENGTH,
                            "min": MIN_LENGTH,
                            "type": "string",
                            "description": i["description"] if "description" in i else ""
                        }
                    }
                    field.update(par)
            except Exception as e:
                raise Exception(f"未知错误{e}")
    return field

params类型数据比较单一,情况也比较单一。当前阶段可以简单处理

小p同学完成了他的工作。并将工作成果交由经理。

结语

以上就是本期内容。小p同学的工作相对简单,无需考虑很多场景。下期我们介绍小j(json解析函数)的工作。

各位大佬。我们下期见

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 歪小王的测试成长之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试之路 pytest接口自动化框架扩展-MS数据解析
    • 开篇
      • 解析
        • 结语
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档