##### 1. 簡介
> 使用postman工具進行接口自動化測試的時候,我們經常需要增加斷言來判斷,結果到底是成功還是失敗。
如果不加斷言,但在`collection runner/Newman`里跑完之后,無法知道接口測試是成功還是失敗。
在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`失敗。
##### 2. 用總是為真的斷言來顯示信息
~~~
// 顯示所有請求參數(在自動化測試里很有用)
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true;
// 迭代次數 iteration 是Postman提供的全局變量,從0開始,用在runner里循環很多次時
tests[`跑第${iteration + 1}次`] = true;
~~~
PS:`request`是`Postman`提供的全局對象 :
responseCode(對象)、responseTime(數字)、responseBody(字符串)是Postman收到服務器返回內容才聲明的變量。
> 【注意】如果你在做自動化測試,目前在接口超時沒返回時:
responseCode、responseTime、responseBody都沒定義,使用時會導致腳本出錯,判斷是否超時沒返回的只能靠header。
request.data里的變量在超時時不解析,很容易讓人誤會請求參數傳錯了,建議此時不顯示這行 。