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中异常报错处理方法汇总
Nov 20 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
解决pycharm安装后代码区不能编辑的问题
Oct 28 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
简单了解Python3里的一些新特性
Jul 13 Python
python3读取autocad图形文件.py实例
Jun 05 Python
如何卸载python插件
Jul 08 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
python Django框架快速入门教程(后台管理)
Jul 21 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
学习php中的正则表达式
2014/08/17 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
python实现从ftp服务器下载文件的方法
2015/04/30 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python迭代和迭代器详解
2016/11/10 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
Python内置类型性能分析过程实例
2020/01/29 Python
python第三方库学习笔记
2020/02/07 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
用python批量移动文件
2021/01/14 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
元旦红领巾广播稿
2014/02/19 职场文书
小学语文课后反思精选
2014/04/25 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
设计专业毕业生求职信
2014/06/25 职场文书
2014年教师节活动总结
2014/08/29 职场文书
优秀共产党员事迹材料
2014/12/18 职场文书
功夫熊猫观后感
2015/06/10 职场文书