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安装路径以及安装包路径小技巧
Apr 28 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
python中sys.argv函数精简概括
Jul 08 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
python turtle库画一个方格和圆实例
Jun 27 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
Django为窗体加上防机器人的验证码功能过程解析
Aug 14 Python
Python urllib.request对象案例解析
May 11 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python检测QQ在线状态的方法
2015/05/09 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
Python虚拟环境项目实例
2017/11/20 Python
Python简易版停车管理系统
2019/08/12 Python
浅析使用Python搭建http服务器
2019/10/27 Python
python基于property()函数定义属性
2020/01/22 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
毕业生自荐信如何写
2014/03/24 职场文书
车间核算员岗位职责
2014/07/01 职场文书
相亲活动方案
2014/08/26 职场文书
小学教育见习报告
2014/10/31 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
退休欢送会致辞
2015/07/31 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android