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入门篇之列表和元组
Oct 17 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
基于python实现音乐播放器代码实例
Jul 01 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
python实现AdaBoost算法的示例
Oct 03 Python
Python 如何安装Selenium
May 06 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实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
一些不错的js函数ajax
2008/08/20 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
详解vue 数组和对象渲染问题
2018/09/21 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python双向循环链表实现方法分析
2018/07/30 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
Python Django基础二之URL路由系统
2019/07/18 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
PyQt5实现简单的计算器
2020/05/30 Python
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
面试后的英文感谢信
2014/02/01 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL