Postman:添加斷言(二)

 使用Postman進行接口測試時,添加斷言十分重要,它是驗證我們的接口是否通過測試的衡量標準。斷言就是判斷響應內容與預期返回是否一致。

    Postman可以在請求模塊的Tests標籤添加斷言,比較方便的是,Postman已經提供了一些代碼片段供我們使用。

    下面使用一個接口實例來說下如何處理斷言:

       如上圖所示,響應body的內容爲一個json格式的字符串,這些內容可以作爲斷言的依據,切換到Tests標籤,控制檯右側可以看到備用的代碼片段。

1.判斷響應內容是否包含某個字符串,點擊選擇【Response body:Contains string】,左側出現如下代碼

        其中,pm是postman的主要對象,一般通過它來調用函數、數據等;

        Body matches string可以看作這個測試代碼段的描述說明,可以自己定義;

        string_you_want_to_search表示預期響應內容,即用來斷言的標準輸出,需要根據實際情況設置;

        改爲如下:

        代表:判斷響應body中是否包含字符串“error_message”。如果包含,表示斷言結果通過;如果不包含,表示斷言結果不通過。

2.判斷響應內容是否和預期內容完全一致。

        點擊選擇【Response body:Is equal to a string】,左側出現如下代碼段

        其中,response_body_string處填寫的內容要和接口返回的內容完全一致纔可以匹配成功。

        假如響應body內容如下:

        那麼需要把所有返回的內容填寫到response_body_string處纔可以。

        拷貝響應內容時,把Raw標籤中的原始返回內容放過去即可,這樣避免出現格式問題。

3.判斷返回json數據中某個鍵對應的值

        如果響應內容是json格式的字符串,則可以斷言json數據中的某個鍵值對。

        點擊選擇【Response body:JSON value check】,左側出現如下代碼段。

        其中,Your test name表示這個測試片段的名稱,可以自己任意定義;

        jsonData.value表示響應json串中的某個鍵,如果響應內容如下:

        所以,jsonData.value可以是json.status或json.desc或json.data。

        eql()填寫的預期返回的字符串(把100改爲斷言內容即可)。

        最終形式如下:

           如果響應內容是嵌套的字典格式,則一層層引用即可,如下:

        如果字典中嵌套了列表,則按照索引引用即可,反正要看清響應內容的格式。

4.判斷請求返回的狀態碼是否爲200

        點擊選擇【Status code:Code is 200】,左側出現如下代碼段。

5.判斷響應體中某個返回值的類型

        點擊選擇【Response body:JSON value check】,然後要把jsonData.value放在一個typeof()函數中,這樣就是判斷輸出值的類型了。

模塊 描述 示例
Clear a global variable 清除全局變量 pm.globals.unset("variable_key");
Clear an environment variable 清除一個環境變量 pm.environment.unset("variable_key");
Get a global variable 得到一個全局變量 pm.globals.get("variable_key");
Get a variable 得到一個變量 pm.variables.get("variable_key");
Get an environment variable 得到一個環境變量 pm.environment.get("variable_key");
Response body:contains string 檢查response body包含字符串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });
Response body:convert XML body to a JSON object response body:將XML轉換爲JSON對象 var jsonObject = xml2Json(responseBody);
Response body:is equal to a string 檢查響應體等於一個字符串 pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
Response body:JSON value check 檢查response body中JSON某字段值 pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
Response headers:content-Type header check 檢查content-Type是否包含在header返回 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
Response time is than 200ms 響應時間超過200ms pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
Send s request 發送一個請求 pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(resp onse.json()); });
Set a global variable 設置一個全局變量 pm.globals.set("variable_key", "variable_value");
Set an environment variable 設置一個環境變量 pm.environment.set("variable_key", "variable_value");
status code:Code is 200 狀態碼:代碼是200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
status code:Code name has string 狀態碼:代碼中有指定字符串 pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); });
status code:Successful POST request 狀態碼:成功的post請求 pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); });
use tiny validator for JSON data 爲json數據使用tiny驗證器 var schema = { "items": { "type": "boolean" } }; var data1 = [true, false]; var data2 = [true, 123]; pm.test('Schema is valid', function() { pm.expect(tv4.validate(data1, schema)).to.be.true; pm.expect(tv4.validate(data2, schema)).to.be.true; });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章