介面測試返回結構對比實現思路記錄
場景:
介面 A 在固定的請求引數組合下,會返回一個幾乎不變的 json 物件。
- 通常的做法,是對這個物件的每一個引數和值進行逐個斷言;
- 但如果這個物件基本上都是固定的,而且結構比較複雜,則一條用例中就需要新增非常複雜和冗長的斷言,導致用例維護難度加大。
解決思路:
既然返回值的結構基本上是固定的,那麼我們可以考慮對整個 json 物件進行斷言。
實現步驟:
- 1. 儲存一份已人工校驗過是正確的返回值作為模板。
- 2. 使用同一套引數請求介面,獲取返回值。同時讀取已儲存的返回值模板。
- 3. 將返回值與模板值進行比較。
比較分為兩步:
- 1. 將返回值和模板值直接對比,如果完全相等,則用例透過。
- 2. 如果不完全相等,呼叫 Python 的 jsondiff 模組對兩個 json 進行比較,獲取到一個差值物件。原理是比較兩個 json 物件,將兩者的差異欄位取出。通常是一些每次請求隨機生成的 ID,或者經常變化的時間戳等欄位。 如模板值為: {'userid':123,'username':'testname','lastlogindate':'2020-09-01'} 而實時返回值為; {'userid':123,'username':'testname','lastlogindate':'2020-09-02'} 則差異物件為: {'lastlogindate':'2020-09-02'}
- 3. 編寫一個公共方法,獲取差值物件的欄位路徑和名稱。如上面的例子,輸出結果為: [lastlogindate]
- 4. 將上一步獲取的差異物件值儲存為二級模板。用例執行時最終比較計算出的差異值是否與儲存的模板差異值相同。
將上述比較方法提取為公共方法,並編寫對應的模板提取方法。這樣只需將對應的引數組合和模板名稱,即可透過 pytest.mark.paramise 的方式,輕鬆新增不同的測試用例。
相關文章
- 記錄在 jmeter 介面測試中 json 返回數值幾種特殊正則提取JMeterJSON
- Jmeter實現 Dubbo介面測試JMeter
- mysql ,tidb sysbench 測試結果記錄MySqlTiDB
- 如何實現介面異常場景測試?測試方法探索與測試工具實現
- 軟體測試學習教程——LoadRunner實現介面測試
- 思路記錄
- 介面自動化測試框架搭建的思路框架
- 在Golang中使用Zap實現結構化日誌記錄Golang
- 表結構對比版本
- C/C++結構體對齊測試C++結構體
- 介面測試並不只是測試引數和返回值
- 記錄---nextTick用過嗎?講一講實現思路吧
- CSS 實現樹狀結構目錄CSS
- pyest+appium實現APP自動化測試,思路全總結在這裡APP
- 基本資料結構實現--雙連結串列【含測試程式碼】資料結構
- 基本資料結構實現--單連結串列【含測試程式碼】資料結構
- 試著使用 jmeter 實現介面自動化測試JMeter
- jmeter介面測試筆記JMeter筆記
- postman實現介面的自動化測試Postman
- springboot+Vue 實現介面測試平臺Spring BootVue
- 記錄一下效能測試實戰
- 記錄python介面自動化測試--利用unittest生成測試報告(第四目)Python測試報告
- python主流框架測試對比Python框架
- 程式碼目錄結構記錄
- pytest+allure+yaml介面自動化測試問題記錄YAML
- 『居善地』介面測試 — 7、介面自動化測試框架的設計與實現框架
- 單元測試 - 測試場景記錄
- API介面的測試步驟和返回資料展示API
- 【Golang】Go 通過結構(struct) 實現介面(interface)GolangStruct
- python 程式碼實現查詢功能介面測試Python
- 求大神指點思路-python 自動化介面測試Python
- APP UI自動化測試思路總結APPUI
- Nginx 和 Gunicorn 效能對比測試Nginx
- 資料結構——單連結串列介面實現(C語言)資料結構C語言
- InnoDB記錄儲存結構
- 介面自動化之實現日誌記錄封裝封裝
- 如何使用Jmeter實現WebSocket協議的介面測試JMeterWeb協議
- 記錄一次測開面試題記錄面試題