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

2022-12-12 16:44:37 浏览数 (1)

测试之路 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解析函数)的工作。

各位大佬。我们下期见

0 人点赞