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基于Tkinter库实现简单文本编辑器实例
May 05 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
python事件驱动event实现详解
Nov 21 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
Pytorch环境搭建与基本语法
Jun 03 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
python 如何区分return和yield
Sep 22 Python
python matplotlib绘制三维图的示例
Sep 24 Python
python使用dlib进行人脸检测和关键点的示例
Dec 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
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
Python中super函数的用法
2017/11/17 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python实现xlsx文件分析详解
2018/01/02 Python
python3+PyQt5实现柱状图
2018/04/24 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
Python常用外部指令执行代码实例
2020/11/05 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
印度低票价航空公司:GoAir
2017/10/11 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
2014年党支部学习材料
2014/05/19 职场文书
节水标语大全
2014/06/11 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
行政处罚决定书
2015/06/24 职场文书
学雷锋广播稿大全
2015/08/19 职场文书