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 相关文章推荐
python实现爬虫下载漫画示例
Feb 16 Python
Python每天必学之bytes字节
Jan 28 Python
python:socket传输大文件示例
Jan 18 Python
对python 匹配字符串开头和结尾的方法详解
Oct 27 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Python Web框架之Django框架文件上传功能详解
Aug 16 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
python实现在线翻译
Jun 18 Python
Python如何获取文件路径/目录
Sep 22 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函数)
2006/10/09 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python实现n个数中选出m个数的方法
2018/11/13 Python
python创建n行m列数组示例
2019/12/02 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
医学院毕业生自荐信范文
2014/03/06 职场文书
社团活动总结怎么写
2014/06/30 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
win10搭建配置ftp服务器的方法
2022/08/05 Servers