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实现数通设备tftp备份配置文件示例
Apr 02 Python
python抓取百度首页的方法
May 19 Python
Python单例模式实例详解
Mar 01 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Sanic框架应用部署方法详解
Jul 18 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python更换pip源方法过程解析
May 19 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
python实现简单倒计时功能
Apr 21 Python
python如何读取.mtx文件
Apr 22 Python
python中subplot大小的设置步骤
Jun 28 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使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP培训要多少钱
2017/06/06 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
webpack4简单入门实例
2018/09/06 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
python调用fortran模块
2016/04/08 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Django如何将URL映射到视图
2019/07/29 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
Python中logger日志模块详解
2020/08/04 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
海南地接欢迎词
2014/01/14 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
2021/07/01 Java/Android