Postman設定斷言
一、斷言的定義
1、什么是斷言?
一般一個完整的介面測驗,包括:請求->獲取回應正文->斷言,請求和獲取回應正文很常見,斷言一般是對請求的回應結果做操作,判斷預期結果與實際結果是否一致, 2、postman中在哪里設定斷言?(1)設定斷言的操作欄位置
(2)自動生成斷言代碼

(3)斷言的流程
- 在postman的tests頁簽中截取要對比的回應資訊;
- 利用斷言陳述句tests[]或chai.js形式把實際回應資訊與期望結果對比;
- 執行請求進行結果查看;
二、Postman斷言的語法
1、語法一:tests[‘測驗用例名稱’] = 邏輯運算式;
//獲取回應行資訊 var code = responseCode.code //獲取回應狀態碼 tests["case_demo_01: 驗證回應狀態碼是否為200"] = code === 200 //做斷言
var name = responseCode.name //獲取回應狀態資訊 tests["case_demo_02: 驗證回應的狀態資訊是否正確"] = name === "OK" //做斷言
2、語法二:chai.js斷言語法
//新版本寫法------chai.js語法 pm.test("TestcaseTitle", function () { pm.expect(true).to.be.true; //chai.js斷言撰寫處 }); pm.test("case_demo_01", function () { pm.expect(2<5 && 3<6).to.be.true //判斷是否為true }); pm.test("case_demo_02", function () { pm.expect("everything").to.be.ok //判斷是否為真值 非空、非0 即為真 });

三、Postman中chai.js斷言常用語法
1、pm.expect
pm.test("測驗標題",function(){ pm.expect(true).to.be.true;//chai.js斷言撰寫 }); pm.expect(2<5 && 3<6).to.be.true;//判斷是否為true
2、pm.response
pm.test("Status code is 200",function(){ pm.response.to.have.status(200); //判斷狀態碼是否為200 }); pm.test("Content-Type is present",function(){ pm.response.to.have.header("Content-Type");、、判斷回應頭是否有Content-Type欄位 });
3、tv4(Tiny Validator for JSON data)--postman斷言庫可以進行json schema(結構)的斷言
var schema ={ "type":"object", //表示當前節點的型別,最外層type代表json的最外層是什么樣的型別 "properties":{ //代表當前節點的子節點資訊,如 access_token 和 expires_in "access_token":{ "type":"string" }, "expires_in":{ "type":"integer" } } "required":{ //一個陣列型別,代表當前節點下必須的節點key "accsee_token", "expires_in" } }
4、其他的常用斷言腳本
(1)清除一個環境變數
postman.clearEnvironmentVariable("variable_key");
(2)斷言回應資料中是否存在某個元素
tests["//斷言回傳的資料中是否存在__pid__這個元素"]=responseBody.has("pid");
(3)斷言response等于預期內容
tests["Body is correct"] = responseBody === "response_body_string";
(4)斷言json決議后的key的值等于預期內容
tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
(5)檢查response的header的資訊是否有被測欄位
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
(6)校驗回應資料中,回傳的資料型別
var jsonData = https://www.cnblogs.com/Annona/p/JSON.parse(responseBody);//第一步先轉化為json字串,其中變數(jsonData)可以自行定義...... tests["//data.category.name__valuse的值的型別是不是string"] = typeof(jsonData.data.category[0].name) == "string";
(7)回應時間判斷
tests["Response time is less than 200ms"] = responseTime < 200;
(8)設定環境變數
postman.setEnvironmentVariable("variable_key", "variable_value");
(9)斷言狀態碼
tests["Status code is 200"] = responseCode.code != 400;
(10)檢查回應碼name
tests["Status code name has string"] = responseCode.name.has("Created");
(11)斷言成功的post請求回傳碼
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502637.html
標籤:其他
上一篇:淺談嵌入式系統的持續集成
