zoukankan      html  css  js  c++  java
  • 接口自动化,断言方法,深度定位错误

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

    代码如下:

     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)

    效果图如下:

  • 相关阅读:
    前端各类网站
    冒泡排序(Bubble Sort)
    实现标签名右对齐,文本框左对齐
    html5新增标签
    Javascript--this--学习笔记
    Javascript原型学习笔记
    Javascript作用域学习笔记
    python嵌入到C++的一些理解
    python入门最佳实践
    ActionBar的一些理解
  • 原文地址:https://www.cnblogs.com/hxjxb/p/7245826.html
Copyright © 2011-2022 走看看