python全面解析接口返回数据


Posted in Python onFebruary 12, 2022

解析接口返回数据

1、把json格式的数据

转换成单个{key,value}的形式,并把每个dict存入list

def parse(self,data): #解析json格式的数据 ,生成list
       for key, value in data.items():
           if isinstance(value, dict):
               self.parse(value)
           elif isinstance(value, list):
               for k in range(len(value)): 
               # 由于list没有items,所以一个一个遍历lis里面的值,然后针对list的每一个项 进行解析
                   self.parse(value[k])
           else:
               self.L.append({key: value})
       return self.L

2、把 变成list的request 和expect一一对比

得知预期值和返回值是否是相符合

def compare(self,resjson,targjson): #比较两个数值返回,如果相等,则返回True,否则返回false
       self.init()
       res_list = self.parse(resjson)
       self.init()
       targ_list = self.parse(targjson)
       count = len(targ_list)
       while count:
           if targ_list[count - 1] in res_list: # list里面,成员运算符,in or not in
               count -=1
           else:
               return False
       return True

3、测试一下看是否正确

if __name__ == "__main__":
    t = Tools()
    request = {
        "head": {
            "clientId": "12",
            "appUDID": "",
            "appVersion": "",
            "channelId": "",
            "innerMedia": "",
            "outerMedia": "",
            "subClientId": "h5",
            "origin": "",
            "test":[{"hahah":"haha"}]
    },
        "body": {
            "userName": "your user name",
            "password": "password"
        }
    }
    expect = {"username":"your user name","password":"password"}
    # print(t.parse(request))
    print(t.compare(request,expect))

结果:返回True or False,因为username两边大小写不一致,所以返回为False

python全面解析接口返回数据

小结:这个parse加compare函数,就可以在接口返回结果时候,直接assert(),得出true or false

完整代码

class Tools:
    def __init__(self):
        self.L = []
    def init(self):
        self.L = []
    def parse(self,data): #解析json格式的数据 ,生成list
        for key, value in data.items():
            if isinstance(value, dict):
                self.parse(value)
            elif isinstance(value, list):
                for k in range(len(value)):  # 由于list没有items,所以一个一个遍历lis里面的值,然后针对list的每一个项 进行解析
                    self.parse(value[k])
            else:
                self.L.append({key: value})
        return self.L
    def compare(self,resjson,targjson): #比较两个数值返回,如果相等,则返回True,否则返回false
        self.init()
        res_list = self.parse(resjson)
        self.init()
        targ_list = self.parse(targjson)
        count = len(targ_list)
        while count:
            if targ_list[count - 1] in res_list: # list里面,成员运算符,in or not in
                count -=1
            else:
                return False
        return True

python请求接口,抓取返回的数据

代码如下

# 引入包
import urllib2
import json
import sys 
 
url = 'http://alisleepy.top' # 接口地址
responseResult = urllib2.urlopen(url, None, timeout=2000)
code = responseResult.getcode()
print '接口状态码:' + str(code)
if code != 200:
	sys.exit('request failed,please check interface is correct!')
 
# 检查数据,是否符合预期
data = json.loads(responseResult.read()) # 反序列化json数据
print 'code码:' + str(data['code])
print 'msg信息:' + str(data['msg'])

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
php使用递归与迭代实现快速排序示例
Jan 23 Python
Python中for循环控制语句用法实例
Jun 02 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
Python 中的Selenium异常处理实例代码
May 03 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
Python for循环及基础用法详解
Nov 08 Python
python实现简单日志记录库glog的使用
Dec 13 Python
Python如何绘制日历图和热力图
Aug 07 Python
用python绘制樱花树
Oct 09 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 #Python
python中出现invalid syntax报错的几种原因分析
Feb 12 #Python
python ConfigParser库的使用及遇到的坑
Feb 12 #Python
Python制作春联的示例代码
Jan 22 #Python
Python制作表白爱心合集
基于Python实现一个春节倒计时脚本
Jan 22 #Python
详解Python如何批量采集京东商品数据流程
Jan 22 #Python
You might like
php生成随机密码的三种方法小结
2010/09/04 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
php编程每天必学之表单验证
2016/03/01 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python实现的Excel文件读写类
2015/07/30 Python
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
Python使用OpenCV进行标定
2018/05/08 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
应届生护士求职信
2013/11/01 职场文书
门卫工作岗位职责
2013/12/17 职场文书
学术会议邀请函范文
2014/01/22 职场文书
老人祝寿主持词
2014/03/28 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
创先争优个人总结
2015/03/04 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL