1. 程式人生 > >接口自動化,斷言方法,深度定位錯誤

接口自動化,斷言方法,深度定位錯誤

深度 cep pre 效果 image -1 urn size clas

接口自動化,斷言方法,深度定位錯誤。

代碼如下:

 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)

效果圖如下:

技術分享

接口自動化,斷言方法,深度定位錯誤