接口全字段校验

场景:清洗指定数据后,接口全字段校验

1、首先获取数据修改之前接口里的数据,并用json格式保存

import json
import requests

url = "http://*************"

res = requests.get(url).json()
data = res["data"]#data对应的value值为string类型
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)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值