• 接口自动化,断言方法,深度定位错误


    接口自动化,断言方法,深度定位错误。

    代码如下:

     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中找到
    ' % (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中找到
    ' % (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 
    ' % (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 
    ' % (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 
    ' % (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 
    ' % (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, "
    "+"".join(C)
    42 Assert(a, b)

    效果图如下:

  • 相关阅读:
    [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B
    [Mobile] 手机浏览器输入框-数字输入框
    [Qcon] 百姓网开发总结
    [QCon] Scrum阅读随想
    [Spring] 事务级别定义
    [Monitor] 监控规则定义
    [Spring Batch] 图解Spring Batch原理
    [JavaCore] 微信手机浏览器版本判断
    Python 编码简单说
    矩阵或多维数组两种常用实现方法
  • 原文地址:https://www.cnblogs.com/hxjxb/p/7245826.html
Copyright © 2020-2023  润新知