接口全字段校验
程序员文章站
2024-03-25 11:12:04
...
场景:清洗指定数据后,接口全字段校验
1、首先获取数据修改之前接口里的数据,并用json格式保存
import json
import requests
url = "http://*************"
res = requests.get(url).json()
data = res["data"]
data_json = json.loads(data)
with open("./api_pre.json", "w") as f:
json.dump(data_json, f)
2、数据修改后,再次调用接口,取得json数据。
接下来遍历json数据:由于json数据是字典类型,value值可能为字符串、数组、字典,因此需要对这三种情况进行单独判断和处理,如为字典格式,则使用递归的方式继续遍历。value值包含两种:保持不变的、以及一定会改变的,比如时间,因此对这两种数据分别判断。在业务场景中,对于新增、修改字段单独处理
import requests
import json
from sqlalchemy import true, false
with open("./api_pre.json", "r") as f:
api_pre = json.load(f)
resumeNumber = "################"
url = "http://*******************&resumeNumber="+resumeNumber
res = requests.get(url).json()
data = res["data"]
api_post = json.loads(data)
print(api_post)
timeList = ["nodeCreateTime", "autoRefreshDate"]
changeList = ["industry"]
addList = ["eduSchoolName"]
def compare_value(key, data_pre, data_post):
if key in timeList:
if ((data_pre != "") and (data_post != "")) or ((data_pre == "") and (data_post == "")):
pass
elif data_pre== "":
print("%s 字段下 原%s为空,新字段值为%s "%(key, data_pre, data_post))
elif data_post == "":
print("%s 字段下 新值%s为空,原字段值为%s "%(key, data_post, data_pre))
elif key in (changeList,addList):
pass
elif data_pre == data_post:
# print("%s,%s"%(data_pre,data_post))
pass
else:
print("%s 字段下 原值%s、新值%s不一致 "%(key, data_pre, data_post))
def json_text(json_pre, json_post):
if isinstance(json_pre, dict): # 判断是否是字典类型isinstance 返回True false
for key in json_pre:
if isinstance(json_pre[key], list): # 如果dic_json[key]是数组类型
length = len(json_pre[key])
for i in range(length):
data_arr_pre = json_pre[key][i]
data_arr_post = json_post[key][i]
for k in data_arr_pre:
# print("****key--:%s value--: %s "%(k,data_arr_pre[k]))
compare_value(k, data_arr_pre[k], data_arr_post[k])
elif isinstance(json_pre[key], dict): # 如果dic_json[key]是字典类型
# print("****key--:%s value--: %s" % (key, json_pre[key]))
json_text(json_pre[key], json_post[key])
else:
# print("****key--:%s value--: %s" % (key, json_pre[key]))
compare_value(key, json_pre[key], json_post[key])
json_text(api_pre, api_post)