python如何全面解析接口返回数据
本篇内容介绍了“python如何全面解析接口返回数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
解析接口返回数据1、把json格式的数据转换成单个{key,value}的形式,并把每个dict存入list
defparse(self,data):#解析json格式的数据,生成listforkey,valueindata.items():ifisinstance(value,dict):self.parse(value)elifisinstance(value,list):forkinrange(len(value)):#由于list没有items,所以一个一个遍历lis里面的值,然后针对list的每一个项进行解析self.parse(value[k])else:self.L.append({key:value})returnself.L2、把 变成list的request 和expect一一对比
得知预期值和返回值是否是相符合
defcompare(self,resjson,targjson):#比较两个数值返回,如果相等,则返回True,否则返回falseself.init()res_list=self.parse(resjson)self.init()targ_list=self.parse(targjson)count=len(targ_list)whilecount:iftarg_list[count-1]inres_list:#list里面,成员运算符,inornotincount-=1else:returnFalsereturnTrue3、测试一下看是否正确
if__name__=="__main__":t=Tools()request={"head":{"clientId":"12","appUDID":"","appVersion":"","channelId":"","innerMedia":"","outerMedia":"","subClientId":"h6","origin":"","test":[{"hahah":"haha"}]},"body":{"userName":"yourusername","password":"password"}}expect={"username":"yourusername","password":"password"}#print(t.parse(request))print(t.compare(request,expect))
结果:返回True or False,因为username两边大小写不一致,所以返回为False
小结:这个parse加compare函数,就可以在接口返回结果时候,直接assert(),得出true or false
完整代码classTools:def__init__(self):self.L=[]definit(self):self.L=[]defparse(self,data):#解析json格式的数据,生成listforkey,valueindata.items():ifisinstance(value,dict):self.parse(value)elifisinstance(value,list):forkinrange(len(value)):#由于list没有items,所以一个一个遍历lis里面的值,然后针对list的每一个项进行解析self.parse(value[k])else:self.L.append({key:value})returnself.Ldefcompare(self,resjson,targjson):#比较两个数值返回,如果相等,则返回True,否则返回falseself.init()res_list=self.parse(resjson)self.init()targ_list=self.parse(targjson)count=len(targ_list)whilecount:iftarg_list[count-1]inres_list:#list里面,成员运算符,inornotincount-=1else:returnFalsereturnTruepython请求接口,抓取返回的数据代码如下
#引入包importurllib2importjsonimportsysurl='http://alisleepy.top'#接口地址responseResult=urllib2.urlopen(url,None,timeout=2000)code=responseResult.getcode()print'接口状态码:'+str(code)ifcode!=200:sys.exit('requestfailed,pleasecheckinterfaceiscorrect!')#检查数据,是否符合预期data=json.loads(responseResult.read())#反序列化json数据print'code码:'+str(data['code])print'msg信息:'+str(data['msg'])
“python如何全面解析接口返回数据”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。