1. 程式人生 > >介面自動化測試,返回值深層完全斷言大法

介面自動化測試,返回值深層完全斷言大法

今日寫了一個對http介面測試中的返回值,json格式 進行深層斷言的方法。話不多說,直接上碼,覺得好的可以留言支援我一下。在此感謝selenium_python群的第一個高手大師兄蝸牛哥 和 眾多高手提供的初始版本。

def compare_json_data(A, B, xpath='.'):
    if isinstance(A, list) and isinstance(B, list):
        for i in range(len(A)):
            try:
                compare_json_data(A[i], B[i], xpath + '[%s]'
%str(i)) except: print '▇▇▇▇▇ A中的%s[%s]未在B中找到'%(xpath,i) if isinstance(A, dict) and isinstance(B, dict): for i in A: try: B[i] except: print '▇▇▇▇▇ A中的%s/%s 未在B中找到'%(xpath,i) continue if
not (isinstance(A.get(i), (list, dict)) or isinstance(B.get(i), (list, dict))): if type(A.get(i)) != type(B.get(i)): print '▇▇▇▇▇ 型別不同引數在[A]中的絕對路徑: %s/%s ►►► A is %s, B is %s '%(xpath,i,type(A.get(i)),type(B.get(i))) elif A.get(i) != B.get(i): print
'▇▇▇▇▇ 僅內容不同引數在[A]中的絕對路徑: %s/%s ►►► A is %s, B is %s ' % (xpath, i, A.get(i), B.get(i)) continue compare_json_data(A.get(i), B.get(i), xpath + '/' + str(i)) return if type(A) != type(B): print '▇▇▇▇▇ 型別不同引數在[A]中的絕對路徑: %s ►►► A is %s, B is %s ' % (xpath, type(A), type(B)) elif A != B and type(A) is not list: print '▇▇▇▇▇ 僅內容不同引數在[A]中的絕對路徑: %s ►►► A is %s, B is %s ' % (xpath, A, B) #倆個字典,傳進去,包含了多種情況。 A= {'b':[1,2,5,8],'c':3,'d':2,'f':[1,2,3],'g':[1,2,3,[2,'2',2]],'h':'5','i':None,'j':False,'k':{'l':{'m':[{'n':12}]}}} B= {'b':[1,2,'3'],'c':2,'e':'4','f':[1,2,3,5],'g':[1,2,3,[1,2]],'h':[1,2],'i':None,'j':True,'k':{'l':{'m':[{'n':2}]}}} compare_json_data(A,B)

這版本目前只是把所有的不一樣的地方都print出來,具體要做成什麼樣來融合進各位自己的框架中,就看著改,比如發現某引數型別不一樣,找不到,就不用繼續執行來,直接斷言失敗或人工觸發異常。斷言失敗,需要傳回倆個值,通過self.assert(之類的斷言方法) 來判斷最終用例執行情況。引發異常就把print改成assert 。
下面上 執行結果。
測試資料:
A={‘b’:[1,2,5,8],’c’:3,’d’:2,’f’:[1,2,3],’g’:[1,2,3,[2,’2’,2]],’h’:’5’,’i’:None,’j’:False,’k’:{‘l’:{‘m’:[{‘n’:12}]}}}
B={‘b’:[1,2,’3’],’c’:2,’e’:’4’,’f’:[1,2,3,5],’g’:[1,2,3,[1,2]],’h’:[1,2],’i’:None,’j’:True,’k’:{‘l’:{‘m’:[{‘n’:2}]}}}

輸出結果:

這裡寫圖片描述

最後,歡迎來留言。不然我還以為我在單機。

相關推薦

介面自動化測試返回深層完全斷言大法

今日寫了一個對http介面測試中的返回值,json格式 進行深層斷言的方法。話不多說,直接上碼,覺得好的可以留言支援我一下。在此感謝selenium_python群的第一個高手大師兄蝸牛哥 和 眾多高手提供的初始版本。 def compare_json_dat

python - 介面自動化測試 - TestRecharge - 充介面測試用例

  # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: test_recharge.py @ide: PyCharm Community Edition @time: 2018-12-27 10:

介面自動化測試完整入門篇

1. 什麼是介面測試 顧名思義,介面測試是對系統或元件之間的介面進行測試,主要是校驗資料的交換,傳遞和控制管理過程,以及相互邏輯依賴關係。其中介面協議分為HTTP,WebService,Dubbo,Thrift,Socket等型別,測試型別又主要分為功能測試,

robotframework 學習(4) :介面測試返回json資料的獲取和驗證

一、前言         上一篇部落格寫了怎麼從excel文件中獲取資料和傳參到介面當中,這一篇文章就記錄一下,獲取到介面返回的引數後的怎麼解析json資料。 二、具體步驟         1、之前看到其

Android測試Selenium3自動化測試Python3 測試Java介面測試

谷歌的Android生態系統正在不斷地迅速擴張。有證據表明,新的移動OEM正在攻陷世界的每一個角落,不同的螢幕尺寸、ROM /韌體、晶片組以及等等等等,層出不窮。於是乎,對於Android開發人員而言,處理儲存碎片變得越來越困窘。 不過幸運的是,Android(還有iOS)開發人員可以無限制地訪問一些先進的

Java介面自動化測試之「Mock介面平臺」讓你的自動化更提前

前言:目前Mock技術已經比較成熟,在日常的工作中Mock也可以給我們帶來很大的遍歷,本篇文章將會使用Moco框架,一步一步搭建一套Mock Server,使得介面的自動化測試更加的提前,也能夠使得前後端分離。 共識與痛點 目前,在軟體行業內,大家已經達成的共識就是,測試

呼叫介面獲取token時返回為{"desc":"CurTime is illegal","code":414}

原因:伺服器時間跟網路時間不同步!!! 即時通訊,第三方為網易雲介面:https://api.netease.im/nimserver/uer/create.action 呼叫介面獲取token時,返回值為{"desc":"CurTime is illegal",

php 除錯微信介面時curl無返回file_get_contents有返回的解決方法

在公司伺服器調式微信介面,使用curl獲取access_token完全沒有問題, 同樣的程式碼拿回家使用php內建webserver調試出現問題,curl沒有返回值,也沒報錯 原因是php內建webserver驗證了https的問題,把curl加入如下程式碼即可:

python開發編程基礎:函數定義返回參數

pan span true 調用 odin pwd 括號 問題 pre 一,函數的定義 1,函數mylen叫做函數名  #函數名  #必須由字母下劃線數字組成,不能是關鍵字,不能是數字開頭  #函數名還是要有一定的意義能夠簡單說明函數的功能2,def是關鍵字 (defi

顛覆你的Python接口自動化測試約嗎?

python 自動化測試 接口測試 課程一直以來,我都很喜歡收集大家問的比較多的問題,然後一邊回答一邊整理成文。今天也不例外,只是由一問一答,變成了三問三答。【你問】我們為什麽要做接口測試?【我答】之前在《測試路上你問我答》系列裏寫過一篇答疑,詳見《接口測試的是什麽和為什麽?》【你問】Python

Robot Framework進行web ui自動化測試瀏覽器配置說明

org .html open fire img row sele title cnblogs 轉載請註明出處,謝謝; chrome瀏覽器: 1、從如下地址下載與本地瀏覽器版本號一致的chromedriver.exe驅動文件; http://chromedriver.stor

函數遞歸函數返回作用域插入排序

內置模塊 例如 turn 標記 uil 未在 這樣的 不同 water 函數數學定義:y=f(x) ,y是x的函數,x是自變量。y=f(x0, x1, ..., xn)Python函數由若幹語句組成的語句塊、函數名稱、參數列表構成,它是組織代碼的最小單元完成一定的功能函數的

CXF2.7整合spring發布webservice返回類型是Map和List<Map>類型

col oca 嚴重 jaxb worker 並且 數據 返回 anr      在昨天研究了發布CXF發布webservice之後想著將以前的項目發布webservice接口,可是怎麽也發布不起來,服務啟動失敗,原來是自己的接口有返回值類型是Map。   研究了一番之

JMeter深入進階效能測試體系介面效能測試各領域企業實戰

jmeter是apache公司基於java開發的一款開源壓力測試工具,體積小,功能全,使用方便,是一個比較輕量級的測試工具,使用起來非常簡單。因為jmeter是java開發的,所以執行的時候必須先要安裝jdk才可以。jmeter是免安裝的,拿到安裝包之後直接解壓就可以使用,同時它在linux/windows/

使用jmeter+ant+jenkins實現介面自動化測試

本次使用linux環境搭建自動化框架 配置ANT  首先下載Ant壓縮包,下載地址https://ant.apache.org/bindownload.cgi 解壓下載的ant包,然後複製jmeter/extras下的ant-jmeter-1.1.1.jar檔案放到ant的lib目錄 然後對該檔

被@ModelAttribute註解的方法會在controller每個方法執行之前都執行返回會儲存在model中

被@ModelAttribute註解的方法會在controller每個方法執行之前都執行,返回值會儲存在model中。 1、如果方法中有返回值,則key為方法名public/private後指定的返回值型別,如: public int a() private String b() p

scikit-learn 線性迴歸模型的score函式返回是決定係數R^2

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression http://scikit-le

多函式程式的基本使用流程返回引數

一般在實際開發過程中,一個程式往往由多個函式(後面知識中會講解類)組成,並且多個函式共享某些資料,這種場景是經常出現的,因此下面來總結下,多個函式中共享資料的幾種方式 使用全域性變數 g_num = 0 def test1(): global g_num …將處理結

Jmeter+Ant+Jenkins介面自動化測試框架搭建for Windows

前言 軟體開發的V模型大家都不陌生,其中測試階段分為單元測試→功能測試→系統測試→驗收測試。其中單元測試一般由開發同學們自己完成,大部分測試具體實施(這裡不包括用例設計)是從單體功能測試開始著手的。 如果測試一個功能,發現主流程無法走下去,也就是介面不通,這時再打回去開發手裡繼續改,改

介面自動化測試框架開發 (pytest+allure+aiohttp+ 用例自動生成)

近期準備優先做介面測試的覆蓋,為此需要開發一個測試框架,經過思考,這次依然想做點兒不一樣的東西。 介面測試是比較講究效率的,測試人員會希望很快能得到結果反饋,然而介面的數量一般都很多,而且會越來越多,所以提高執行效率很有必要 介面測試的用例其實也可以用來兼做簡單的壓力測試,而壓力測