今天要測試一個新接口,返回值應該是現有6個接口返回值中data.CountNum之和。麻煩處有:javascript
1.用戶角色不一樣,接口返回值也有不一樣。所以要用到的接口不少。java
2.要對全部接口的返回值求和,再與新接口比較。web
3.須要屢次測試chrome
要解決這些問題,此次就好好用了用postman。在基本的POST/GET以外,postman能作的有不少。json
目前postman的chrome app版本已再也不維護,推薦去官網下載客戶端版本,安裝即用。api
打開頁面後,可快速發起請求。postman對最經常使用的功能都強調顯示,分別是左上角的New(新建請求),Sync(同步),Send(發送請求),知足最多見的需求,開箱即用。其實,以前用到最多的功能也就僅限於此。此次會稍微多探索一些。app
問題中提到的這些請求,結構相似,參數都是三個或兩個,且都有loginid,請求頭中都須要包含authorization。所以天然能夠用參數化,配置多處數據。一來用起來省力,再者以後統一換參數時也更爲方便。框架
在collection處,選擇更多按鈕,點擊Edit,選擇Variables頁面,便可配置參數。可填形參,初始值,當前值。以後在collection內部調用時,採用{{variable_name}}的形式(相似web框架中的模板語言)。post
在request頁面,選擇Tests,便可編寫腳本。Pre-request Script,即請求發出前會執行的腳本,而Tests中的腳本會在請求完成後執行。注意,在collection配置時,也有Tests頁面,那裏編寫的腳本會在collection內的每一個request執行後都執行一遍。測試
腳本採用javascript編寫,可點擊左下角的console按鈕進行調試(快捷鍵是ctrl+alt+c)。postman內部的api可參考官方說明,變量能夠跨請求訪問,還有特殊的斷言語句,用來生成測試結果。此次編寫的腳本很簡單,大致思路是:
1.在collection內發送第一次請求時,初始化變量total_count,用以記錄各個接口返回的任務數量。
2.以後每次對接口請求後,解析出須要的數量,再將上一次的total_count加起來。這樣在完成全部請求後,就能得到全部接口的任務數量之和。
3.在collection最後,對待測試接口發起請求,獲得總任務數量,與total_count比較,返回測試結果。
選擇collection,點擊運行按鈕,可依次執行整個collection內的請求。執行頁面能夠查看測試結果。
顯示爲FAIL即斷言未經過。
//請求1,2,3,4,5 pm.globals.set("total_count", 0); res_json = JSON.parse(pm.response.json()); pm.globals.set("total_count", pm.globals.get("total_count") + res_json['data']['CountNum']); console.log(pm.globals.get("total_count")); //請求6 res_json = JSON.parse(pm.response.json()); if( res_json.data.CountNum == null){ console.log(pm.globals.get("total_count")); } else { pm.globals.set("total_count", pm.globals.get("total_count") + res_json['data']['CountNum']); console.log(pm.globals.get("total_count")); } //請求7 res_json = JSON.parse(pm.response.json()); let e2e_count = res_json['data']['CountNum']; pm.test('e2e number should be equal to total count', function () { pm.expect(e2e_count).to.equal(pm.globals.get("total_count")); });
postman下載地址 https://www.getpostman.com/downloads/
postman腳本介紹 https://learning.getpostman.com/docs/postman/scripts/intro_to_scripts
postman沙箱api說明 https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference