测试之路 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中,最大值和最小值是非必填的,如果操作人没有填写该值,我们就要给他一个默认的最大值和最小值
- 做完上述步骤校验后,就可以将参数提取出来,存入一个模板中,最后将组织好的数据交给”经理”。
# 解析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解析函数)的工作。
各位大佬。我们下期见