Postman - API Testing
Postman - API Testing
前言
在開發 WebAPI 時,常常會搭配 Postman 來快速進行 API 呼叫及測試。
除了逐步手動呼叫單一的 API,我們也可以更進一步的把 API 串接起來,
透過 Postman 的 Runner 來進行整合測試。
情境說明
以下我們將會以實際案例,來說明該如何透過 Runner 來進行整合測試。
- 呼叫「登入」API 取得驗證後的 JWT。
- 將取得的 API 設定至全域變數中。
- 呼叫「取得訊息」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);
});
參考資料
文章內容的敘述如有錯誤及觀念不正確,請不吝嗇指教,如有侵權內容也請您與我反應。感謝您~