API Postman Test Testing

Postman - API Testing

江崑成 2019/12/31 11:54:06
123

Postman - API Testing

前言

在開發 WebAPI 時,常常會搭配 Postman 來快速進行 API 呼叫及測試。
除了逐步手動呼叫單一的 API,我們也可以更進一步的把 API 串接起來,
透過 Postman 的 Runner 來進行整合測試。

情境說明

以下我們將會以實際案例,來說明該如何透過 Runner 來進行整合測試。

  1. 呼叫「登入」API 取得驗證後的 JWT。
  2. 將取得的 API 設定至全域變數中。
  3. 呼叫「取得訊息」API 來取得該使用者所有的訊息。

手動執行測試(未透過 Runner + Test Script 整合)

Step 1. 呼叫「登入」API 取得驗證後的 JWT。

Step 2. 將 JWT 填入 Authorization。

Step 3. 呼叫「取得訊息」API 得到使用者所有的訊息。

半自動執行測試(Test Script & Setting)

透過 Test Script 的撰寫,可以將手動填入 JWT 的部分自動化,免去每個 API 都要更新 Authorization 的值。

Step 1. 撰寫「登入」API 的 Test Script 進行測試,並自動將登入後的 JWT 設定至全域變數中。

Step 2. 呼叫「登入」API,確定全域變數已被新增。

Step 3. 設定「取得訊息」API 的 Authorization 來源為全域變數。

Step 4. 呼叫「取得訊息」API 得到使用者所有的訊息。

全自動執行測試(Runner & Script)

在專案進行過程中,我們也可以將 WebAPI 組合,進行一連串的情境測試,下面以簡單範例來說明。

Step 1. 建立資料夾,複製「登入」、「取得訊息」API 到 API_Runner_Testing 資料夾,進行修改及組合。

Step 2. 撰寫「登入」API 的 Test Script 進行測試,並自動將登入後的 JWT 設定至全域變數中,並在成功後自動呼叫「取得訊息」API。

// 測試一:判斷 HttpStatusCode 是否為 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

var jsonData = pm.response.json();

// 測試二:判斷 ReturnCode 是否為 00
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.ReturnCode).to.eql("00");
});

if (responseCode.code === 200 && jsonData.ReturnCode === "00") {
    // 將 JWT 設定至 AccessToken 全域變數中
    pm.environment.set("AccessToken", jsonData.Result.AccessToken);
    postman.setNextRequest('PersonalMsg/AllMsg Copy');
} else {
    pm.environment.unset("AccessToken");
    postman.setNextRequest(null);
}

Step 3. 撰寫「取得訊息」API 的 Test Script,進行資料筆數判斷。

// 測試一:判斷 HttpStatusCode 是否為 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

var jsonData = pm.response.json();

pm.test("資料筆數大於零", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.Result.length).to.greaterThan(10);
});

Step 4. 點選右上方箭頭, 啟動 Runner。

Step 5. 執行測試。(Error)

先模擬測試錯誤,因我們將資料回傳筆數判斷設定為大於 10 筆,但實際回來的筆數小於 10 筆。

Step 5. 重新執行測試。(Pass)

調整筆數判斷為大於 0 筆,再重新執行測試。

// 測試一:判斷 HttpStatusCode 是否為 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

var jsonData = pm.response.json();

pm.test("資料筆數大於零", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.Result.length).to.greaterThan(0);
});

參考資料

文章內容的敘述如有錯誤及觀念不正確,請不吝嗇指教,如有侵權內容也請您與我反應。感謝您~

Postman Learning Center - Test scripts

江崑成