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继承和抽象类的实现方法
Jan 14 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
快速了解Python相对导入
Jan 12 Python
python使用Tesseract库识别验证
Mar 21 Python
TensorFlow实现简单卷积神经网络
May 24 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
python实现百度OCR图片识别过程解析
Jan 17 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
Python Django模型详解
Oct 05 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中使用gd库实现下载网页中所有图片
2015/05/12 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
javascript中this指向详解
2016/04/23 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
详解angular element()方法使用
2017/04/08 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
小班开学寄语
2014/04/04 职场文书
主持人演讲稿
2014/05/13 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
小学家长通知书评语
2014/12/31 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python