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 域名分析工具实现代码
Jul 15 Python
Python、Javascript中的闭包比较
Feb 04 Python
Python常用的日期时间处理方法示例
Feb 08 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
python绘制直线的方法
Jun 30 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
python实现多人聊天室
Mar 31 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
Python是什么 Python的用处
May 26 Python
浅析Python requests 模块
Oct 09 Python
python Timer 类使用介绍
Dec 28 Python
Python 处理表格进行成绩排序的操作代码
Jul 26 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
Zerg兵种介绍
2020/03/14 星际争霸
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
php下载文件的代码示例
2012/06/29 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
Python中getpass模块无回显输入源码解析
2018/01/11 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
Python字典对象实现原理详解
2019/07/01 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
python模拟斗地主发牌
2020/04/22 Python
Python调用JavaScript代码的方法
2020/10/27 Python
python线程优先级队列知识点总结
2021/02/28 Python
大学自我鉴定范文
2013/12/26 职场文书
高中军训感言600字
2014/03/11 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
小王子读书笔记
2015/06/29 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
Python图片处理之图片裁剪教程
2021/05/27 Python