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
小结:这个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,接口,返回数据


猜你喜欢
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
