网络编程
位置:首页>> 网络编程>> Python编程>> python全面解析接口返回数据

python全面解析接口返回数据

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

标签:python,接口,返回数据

解析接口返回数据

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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com