接口自动化、断言方法及深度定位错误

发表于:2017-8-04 15:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黑熊精小白    来源:博客

  代码如下:
   1 #!/usr/bin/env python
   2 # -*- coding: utf-8 -*-
   3 # @Time    : 2017-07-27 13:49
   4 
   5 # 断言方法,比较两个list或dict的不同之处
   6 
   7 a= {'b':[1,2,5,8],'c':3,'d':2,'f':[1,2,3],'g':[1,2,3,[2,'2',2]],'h':'5'}
   8 b= {'b':[1,2,'3'],'c':2,'e':'4','f':[1,2,3,5],'g':[1,2,3,[1,2]],'h':[1,2]}
   9 
  10 def compare_json_data(A, B, L = [], xpath = '.'):
  11     if isinstance(A, list) and isinstance(B, list):
  12         for i in range(len(A)):
  13             try:
  14                 compare_json_data(A[i], B[i], L, xpath + '[%s]' % str(i))
  15             except:
  16                 L.append('▇▇▇ A中的key %s[%s]未在B中找到\n' % (xpath, i))
  17     if isinstance(A, dict) and isinstance(B, dict):
  18         for i in A:
  19             try:
  20                 B[i]
  21             except:
  22                 L.append('▇▇▇ A中的key %s/%s 未在B中找到\n' % (xpath, i))
  23                 continue
  24             if not (isinstance(A.get(i), (list, dict)) or isinstance(B.get(i), (list, dict))):
  25                 if type(A.get(i)) != type(B.get(i)):
  26                     L.append('▇▇▇ 类型不同参数在[A]中的绝对路径:  %s/%s  ??? A is %s, B is %s \n' % (xpath, i, type(A.get(i)), type(B.get(i))))
  27                 elif A.get(i) != B.get(i):
  28                     L.append('▇▇▇ 仅内容不同参数在[A]中的绝对路径:  %s/%s  ??? A is %s, B is %s \n' % (xpath, i, A.get(i), B.get(i)))
  29                 continue
  30             compare_json_data(A.get(i), B.get(i), L, xpath + '/' + str(i))
  31         return
  32     if type(A) != type(B):
  33         L.append('▇▇▇ 类型不同参数在[A]中的绝对路径:  %s  ??? A is %s, B is %s \n' % (xpath, type(A), type(B)))
  34     elif A != B and type(A) is not list:
  35         L.append('▇▇▇ 仅内容不同参数在[A]中的绝对路径:  %s  ??? A is %s, B is %s \n' % (xpath, A, B))
  36     return L
  37 
  38 def Assert(A,B):
  39     C = []
  40     compare_json_data(A, B, C)
  41     assert len(C) == 0, "\n"+"".join(C)
  42 Assert(a, b)
  效果图如下:
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号