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
小结:这个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


猜你喜欢
- 在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_mo
- 前言聚合函数用来对表中的数据进行统计和计算。users表结构如下:什么是聚合函数聚合函数是用来做简单的数据统计的,比如说统计一下 &
- 作者:Jahongir Rahmonov机器之心编译参与:魔王PyCharm 是一种 Python IDE,可以帮助程序员节约时间,提高生产
- 阐述写SQL时本想通过 A left B join on and 后面的条件查出的两条记录变成一条,奈何发现还是有两条。后来发现 join
- 本文大纲os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作。而Python另外一个标准库——shutil库,
- 题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果
- 具体方法:首先打开命令提示符;然后执行【mysql -u root -p】命令进入mysql;最后执行如下命令即可:select SUBST
- 废话不多说,大家直接看代码吧!"""遗传算法实现求函数极大值—Zjh"""imp
- 根据代码中运行的结果来看,主要由以下几种:1. sum():将array中每个元素相加的结果2. axis对应的是维度的相加。比如:1、ax
- 一、导入re库python使用正则表达式要导入re库。import re在re库中。正则表达式通常被用来检索查找、替换那些符合某个模式(规则
- 本文实例讲述了Python全局变量用法。分享给大家供大家参考,具体如下:全局变量不符合参数传递的精神,所以,平时我很少使用,除非定义常量。今
- 大家都知道JAVA里最流行的是MVC模型的编程方式,如果你不知道MVC的概念,可以去网上搜索下,应该会马上找到N多资料。PHP5推出之后,也
- golang用于创建和发送电子邮件的库douceur - HTML 邮件中的内联 CSSemail - 一个健壮的、灵活的 email 库G
- 代码:function checkall(checkNames){ var allBoxs = document.getElem
- 针对弹幕的爬取我们如果只需要获取看到的网页里面的而数据,使用selenium就能实现,对于直播平台来说,往往有第三方平台api让你获取数据(
- 我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python.不信?来跟着我
- 在本篇文章中,我们将探讨如何使用YOLOv5车牌识别系统实现实时监控与分析。我们将介绍如何将模型应用于实时视频流,以及如何分析车牌识别结果以
- python的uuid都是32位的,比较长,处理起来效率比较低,本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六
- 如:$str="php如何将字 符串中322的字母数字sf f45d和中文_分割?";按数字或字母分割。$str = &
- 主机环境:(Python2.7.9 / Win8_64 / bs4)利用BeautifulSoup4来抓取 www.pm25.com 上的P