接口测试中使用json串对比

背景:在接口测试中,一般返回都是json字符串,同一个接口随着开发代码的改动或者相关业务需求的变更,需要反复测试多次,但使用的case都是一样的,反复的人工比对效率低下还容易出错,于是想着如果能实现两个json字符串的自动比对的话,岂不是可以解放很多的人工比对工作,哈哈哈哈哈------于是乎,想做一个懒人的自己终于开始了实现json比对函数编写的开始,废话不多数,上代码:

def compare_one(src_data,dst_data,flag):
	flag=flag
	#print("------------------进入compare",flag)
	from collections import Iterable
	if isinstance(dst_data,Iterable) and isinstance(src_data,Iterable):
		if len(dst_data)!=len(src_data):
			print("dst_data和src_data的长度不一致:%s-----%s"%(dst_data,src_data))
			flag=0
			return flag
		if isinstance(src_data,dict) and isinstance(src_data,dict):
			#print("----进入instance_dict_____")
			for key in dst_data:
				if key not in(src_data):
					print("src_data不存在这个:%s"% key)
					flag=0
					return flag
				if isinstance(dst_data[key],(dict,list)):
					flag=compare_one(src_data[key],dst_data[key],flag)
				else:
					if dst_data[key]!=src_data[key]:
						print("dst_data和src_data的:%s的值对应不上:%s--%s"% (key,dst_data[key],src_data[key]),'\n')
						flag=0
						return flag


		if isinstance(dst_data,list) and isinstance(src_data,list):
			#print("----进入instance_list_____")
			for i in range(len(dst_data)):
				if isinstance(dst_data[i],(dict,list)):
					flag=compare_one(dst_data[i],src_data[i],flag)
				else:
					if dst_data[i] not in src_data:
						print("%s和%s列表的值对不上"%(dst_data,dst_data),'\n')
						flag=0
						return flag
	return flag

参数:
src_data:用于作为参考的json串
dst_data:接口返回的json串
flag:初始传入为1,如果返回1表示两个json串一致,如果返回1表示不一致

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值