在使用postman工具進行接口自動化時我們經常需要斷言來進行判斷,結果到底是成功還是失敗。
但在collection runner/Newman里如果不加斷言,跑完后都無法知道是成功還是失敗
斷言是寫在tests標簽頁里
在postman工具中,斷言是寫在tests標簽頁里,對於剛上手的新手來說
可以參考文檔和界面右邊的代碼模板
tests['Status code is 200'] = responseCode.code === 200; // 推薦用全等 ===,確保類型和值都一致
tests['Response time is less than 200ms'] = responseTime < 200; tests['Body matches string'] = responseBody.has('xxx'); // 只要有指定關鍵字就行,在哪、有幾個等都不管
tests['Content-Type is present'] = postman.getResponseHeader('Content-Type') || false; // Postman的斷言實際上就是往全局對象 tests 添加鍵值對 // 它的key會顯示在報告界面上,value是可以解析為boolean的表達式 // 如果得出的值是true,在報告里顯示為成功,false失敗 //
【變通】
用總是為真的斷言來顯示信息
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true; // 顯示所有請求參數(在自動化測試里很有用)
tests[`跑第${iteration + 1}次`] = true; // 用在runner里循環很多次時 // 迭代次數 iteration 是Postman提供的全局變量,從0開始
// PS:request是Postman提供的全局對象 // responseCode(對象)、responseTime(數字)、responseBody(字符串)目前是Postman收到服務器返回內容才聲明的變量
【注意】如果你在做自動化測試,目前在接口超時沒返回時: // responseCode、responseTime、responseBody都沒定義,使用時會導致腳本出錯,判斷是否超時沒返回的只能靠header // request.data里的變量在超時時不解析,很容易讓人誤會請求參數傳錯了,建議此時不顯示這行