欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

接口全字段校验

程序员文章站 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)


相关标签: python