python全面解析接口返回数据

作者:RainYeZ 时间:2023-09-15 17:02:28 

解析接口返回数据

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'])

来源:https://blog.csdn.net/aoxixi/article/details/103454982

标签:python,接口,返回数据
0
投稿

猜你喜欢

  • SQLServer中的触发器基本语法与作用

    2024-01-25 18:18:02
  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图

    2022-02-25 17:30:49
  • 使用numpy实现矩阵的翻转(flip)与旋转

    2023-01-31 01:03:18
  • PHP实现上传文件并存进数据库的方法

    2023-07-03 21:35:14
  • electron-vue 项目添加启动loading动画的实现思路

    2023-07-02 16:52:41
  • 利用pygame完成动画精灵和碰撞检测

    2022-05-06 22:53:26
  • django drf框架中的user验证以及JWT拓展的介绍

    2023-12-31 21:14:11
  • 使用python的chardet库获得文件编码并修改编码

    2022-02-23 18:22:35
  • Javascript 注册事件浅析

    2024-04-28 10:20:22
  • 影响SQL Server性能的关键三个方面

    2009-02-13 16:59:00
  • 详解mysql中的concat相关函数

    2024-01-16 06:36:22
  • 快速掌握JavaScript正则表达式

    2010-01-23 11:39:00
  • Pytorch:Conv2d卷积前后尺寸详解

    2021-01-18 23:36:54
  • SQL Server 数据库清除日志的方法

    2024-01-20 20:14:03
  • Python解释器及PyCharm工具安装过程

    2021-02-23 08:21:51
  • 浅析Banner构成与创意设计

    2009-11-28 16:25:00
  • ASP 80040e14错误的解决方法

    2011-03-17 11:21:00
  • SQL Server查询速度慢的原因及优化方法

    2009-01-05 13:46:00
  • js生成随机数(指定范围)的实例代码

    2024-04-17 10:29:42
  • mysql-8.0.15-winx64 使用zip包进行安装及服务启动后立即关闭问题

    2024-01-23 05:58:37
  • asp之家 网络编程 m.aspxhome.com