介面測試返回結構對比實現思路記錄
場景:
介面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 的方式,輕鬆新增不同的測試用例。
相關文章
- Haproxy和Nginx負載均衡測試效果對比記錄Nginx負載
- Jmeter實現 Dubbo介面測試JMeter
- 記錄在 jmeter 介面測試中 json 返回數值幾種特殊正則提取JMeterJSON
- 如何實現介面異常場景測試?測試方法探索與測試工具實現
- 介面測試書目錄
- 介面測試總結
- GOLANG使用嵌入結構實現介面Golang
- mysql ,tidb sysbench 測試結果記錄MySqlTiDB
- 介面自動化測試框架搭建的思路框架
- 介面測試並不只是測試引數和返回值
- 基本資料結構實現--雙連結串列【含測試程式碼】資料結構
- C/C++結構體對齊測試C++結構體
- 軟體測試學習教程——LoadRunner實現介面測試
- 試著使用 jmeter 實現介面自動化測試JMeter
- 思路記錄
- jmeter介面測試筆記JMeter筆記
- 呼叫通訊錄實現思路
- postman實現介面的自動化測試Postman
- 基本資料結構實現--單連結串列【含測試程式碼】資料結構
- MONGODB 最近測試結果的簡單記錄MongoDB
- 表結構對比版本
- 記錄一下效能測試實戰
- 在Golang中使用Zap實現結構化日誌記錄Golang
- 單元測試 - 測試場景記錄
- 『居善地』介面測試 — 7、介面自動化測試框架的設計與實現框架
- CSS 實現樹狀結構目錄CSS
- 小紅書API介面測試 | 小紅書筆記詳情 API 介面測試指南API筆記
- pyest+appium實現APP自動化測試,思路全總結在這裡APP
- API介面的測試步驟和返回資料展示API
- 記錄python介面自動化測試--利用unittest生成測試報告(第四目)Python測試報告
- APP UI自動化測試思路總結APPUI
- Nginx 和 Gunicorn 效能對比測試Nginx
- python主流框架測試對比Python框架
- 程式碼目錄結構記錄
- pytest+allure+yaml介面自動化測試問題記錄YAML
- 普通磁碟與LSI快閃記憶體卡測試對比記憶體
- 敏捷測試VS傳統測試對比,6招玩轉敏捷測試!敏捷測試
- 如何使用Jmeter實現WebSocket協議的介面測試JMeterWeb協議