導航:
1.postman斷言介紹
2.狀態碼斷言
3.響應正文斷言-包含
4.響應正文斷言-json欄位
5.響應頭斷言
6.響應時間斷言
7.環境變數的斷言
- - - - - - - - - 分割線 - - - - - - - - - -
1.postman斷言介紹
postman在傳送請求後,需要對返回的結果做判斷,驗證是否符合預期,如狀態碼、響應頭、響應正文等資訊進行斷言操作,在設定時會給定一個預期結果,在傳送請求後會得到一個實際如果,如果兩者結果一致,則認為是成功的(PASS),否則則是失敗的(Fail),這種操作就叫做斷言。斷言主要是在Test操作框內進行設定,使用JavaScript語言編寫,斷言的結果在下方響應內容的TestResult內
說明: 對響應結果中的狀態碼進行驗證,用於判斷響應的狀態碼是否符合預期
(1)範例1:設定預期code=200,實際結果200(PASS)
tests["status code is 200"] = responseCode.code == 200;
(2)範例2:設定(2)範例2:預期code=404,實際結果200 (FAIL)
tests["status code is 404"] = responseCode.code == 404;
說明: 對響應結果中的響應正文進行驗證,判斷返回的響應正文是否包含指定的字串(ps:大小寫是敏感的)
範例1:設定返回包含helloworld,結果滿足(PASS)
tests["Body matches"] =responseBody.has("helloworld");
說明: 對響應結果中的響應的json結構中的欄位進行檢查,看是否符合預期
(1)範例1:檢查返回結果體 data - name 的json值是否為helloworld,符合預期(PASS)
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.name).to.eql("helloworld");
});
(2)範例2:檢查返回結果體 code的json值是否為200,不符合預期(FAIL)
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(200);
});
說明:對響應頭部中的值(header)進行判斷,是否包含對應的屬性。
(1)範例1:檢查header中是否包含Content-Encoding,符合預期(PASS)
pm.test("Content-Encoding is present", function () {
pm.response.to.have.header("Content-Encoding");
});
(2)範例2:檢查header中是否包含Content-Type,不符合預期(FAIL)
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
說明:驗證響應結果返回的時間(responseTime)是否在指定範圍,小於對應的時間(ms)則符合預期
(1)範例1:檢測介面的響應時間小於200ms,符合預期(PASS)
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
(2)範例2:檢測介面的響應時間小於10ms,不符合預期(FAIL)
pm.test("Response time is less than 10ms", function () {
pm.expect(pm.response.responseTime).to.be.below(10);
});
說明:使用這個斷言的前提是postman中已經設定了環境變數,用於校驗介面內的使用到的環境變數值的正確性
ps:環境變數在Pre-requestScript與Tests元件內都可以進行設定
(1)範例1:檢測環境變數variable_key的值是否為hello,符合預期(PASS)
pm.environment.set("variable_key", "hello");//設定環境變數及變數值在Pre-requestScript
var data = pm.environment.get("variable_key");//獲取環境變數
tests["檢查環境變數值variable_key值是否為hello"] = data== "hello";
(2)範例2:檢測環境變數time的值是否為2022-10-08,不符合預期(FAIL)
pm.environment.set("muber", 100);//設定環境變數及變數值
var number = pm.environment.get("muber");//獲取環境變數
tests["檢查環境變數值muber值是否為200"] = number== 200;