Skip to content

建立 2026-09-16 更新 2026-09-16

測試腳本(Scripts)

Postman 每支請求都有兩個可以寫 JavaScript 的地方:Pre-request Script(送出前執行)與 Post-response Script/Tests(收到回應後執行)。這兩段腳本讓 Postman 從「手動測試工具」變成「可以自動驗證的測試框架」。

腳本執行順序

一次請求的完整流程是:

Pre-request Script → 送出請求 → 收到回應 → Tests(Post-response Script)
  • Pre-request Script:適合動態產生資料,例如時間戳記、簽章,或設定這次請求要用的變數。
  • Tests:適合寫斷言,檢查狀態碼、回應內容、回應時間是否符合預期;也可以在這裡把回應資料存成變數,給下一支請求使用。

用 pm.test 寫斷言

Postman 內建 Chai 風格的斷言語法,包在 pm.test() 裡:

pm.test("狀態碼是 200", function () {
  pm.response.to.have.status(200);
});

pm.test("回應時間在 500ms 內", function () {
  pm.expect(pm.response.responseTime).to.be.below(500);
});

pm.test("回應內容包含正確的使用者名稱", function () {
  const data = pm.response.json();
  pm.expect(data.name).to.eql("Victor");
});

每個 pm.test() 都是獨立的一項測試,全部通過才算這支請求測試成功;Runner 或 Newman 執行時,會統計每支請求的測試通過/失敗數。

常用的 pm.* API

API 用途
pm.response.json() 把回應 Body 解析成 JavaScript 物件
pm.response.to.have.status(code) 斷言狀態碼
pm.environment.set(key, value) 設定 Environment 變數
pm.collectionVariables.set(key, value) 設定 Collection 變數
pm.variables.get(key) 讀取目前生效(優先權最高)的變數值
pm.request 讀取目前這支請求的方法、URL、Header 等資訊
pm.sendRequest(url, callback) 在腳本裡額外發一支請求(例如先取得 Token)

串接多支請求(Chaining Requests)

實務上常見「先呼叫 A 拿資料,再把資料帶進 B」的情境:

// A 請求的 Tests:把新建立的訂單 ID 存起來
const order = pm.response.json();
pm.collectionVariables.set("orderId", order.id);

B 請求的網址就能寫成 {{baseUrl}}/orders/{{orderId}},兩支請求依序執行時就會自動接上。這個技巧是 Collection Runner 能夠模擬完整流程(建立 → 查詢 → 更新 → 刪除)的關鍵。

撰寫建議

  • 測試名稱寫清楚在驗證什麼,方便測試失敗時第一眼就知道是哪個環節出錯。
  • 共用的斷言邏輯,可以寫在 Collection 或資料夾層級的腳本,避免每支請求重複貼一樣的程式碼。
  • 腳本執行環境是 Postman Sandbox(Node.js 的精簡子集),部分 npm 套件無法使用,複雜邏輯建議還是交給程式碼測試框架。

下一步

單支請求的測試寫好之後,接著學怎麼把整個 Collection 排隊執行,並用命令列工具接進自動化流程:Collection Runner 與 Newman