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 正则式 概述及常用字符
May 07 Python
Python抓取百度查询结果的方法
Jul 08 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
老生常谈Python之装饰器、迭代器和生成器
Jul 26 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
对python模块中多个类的用法详解
Jan 10 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python中Subprocess的不同函数解析
Dec 10 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
django model通过字典更新数据实例
Apr 01 Python
详解Pycharm安装及Django安装配置指南
Sep 15 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
初学CAKEPHP 基础教程
2009/11/02 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
今天是星期几的4种JS代码写法
2013/09/17 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
如何使用puppet替换文件中的string
2018/12/06 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
Python单链表简单实现代码
2016/04/27 Python
python文本数据相似度的度量
2018/03/12 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python做反被爬保护的方法
2019/07/01 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python数据正态性检验实现过程
2020/04/18 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
党风廉政建设责任书
2014/04/14 职场文书
2014组织生活会方案
2014/05/19 职场文书
网络营销实训总结
2015/08/03 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书