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之做一个小游戏
Sep 28 Python
python实现文本去重且不打乱原本顺序
Jan 26 Python
Python测试人员需要掌握的知识
Feb 08 Python
Php多进程实现代码
May 07 Python
Python爬虫之正则表达式基本用法实例分析
Aug 08 Python
python实时检测键盘输入函数的示例
Jul 17 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Python 中判断列表是否为空的方法
Nov 24 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
Python类成员继承重写的实现
Sep 16 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 fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
刷新PHP缓冲区为你的站点加速
2015/10/10 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
JavaScript门道之标准库
2018/05/26 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Python 变量类型及命名规则介绍
2013/06/08 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
python with (as)语句实例详解
2020/02/04 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
python爬取音频下载的示例代码
2020/10/19 Python
Python对excel的基本操作方法
2021/02/18 Python
信息管理专业推荐信
2013/10/29 职场文书
人事档案接收函
2014/01/12 职场文书
上级检查欢迎词
2014/01/18 职场文书
早读课迟到检讨书
2014/09/25 职场文书
质量整改通知单
2015/04/21 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书