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

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

开篇

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

"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中,最大值和最小值是非必填的,如果操作人没有填写该值,我们就要给他一个默认的最大值和最小值

  • 做完上述步骤校验后,就可以将参数提取出来,存入一个模板中,最后将组织好的数据交给”经理”。

# 解析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解析函数)的工作。

各位大佬。我们下期见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值