API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Testing APIs
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Testing APIs

流程控制:If, For, ForEach

現實世界中的測試並不總是一條直線。有時,如果登入失敗,您需要跳過一步,或者重複測試 100 次,或者迭代 API 返回的項目列表。
Apidog 提供了強大的 流程控制 (Flow Control) 步驟,以建構適應和擴展的「智慧」測試場景。

為什麼您需要流程控制#

如果沒有流程控制,您的測試場景只是一個靜態的請求列表 (A -> B -> C)。現實世界的測試需要邏輯。您可能需要條件執行(「如果 A 失敗,則停止」)、迴圈(「運行步驟 B 50 次」)或迭代(「對於列表中的每個產品,運行 B」)。流程控制為您提供了這種靈活性。

1. 條件 (If-Then-Else)#

Condition(條件)步驟允許您根據標準分支您的測試。

如何使用#

在您的測試場景中,新增條件很簡單:
1.
新增一個 Condition 步驟。
2.
設定您的比較規則(例如 {{status_code}} 等於 200)。
3.
將您想要保護的測試步驟拖放到「If」區塊 內部。
Condition Step Configuration

範例:「安全」使用者刪除#

如果無法建立使用者,請不要嘗試刪除。
步驟 1: 建立使用者
   (提取 $.id 到 {{userId}})
   (提取狀態碼到 {{createStatus}})

步驟 2: Condition (If {{createStatus}} == 201)
   |--> 步驟 3: 刪除使用者 (使用 {{userId}})
查看詳情:流程控制條件

2. For 迴圈 (固定重複)#

For Loop 非常適合簡單的重複,如壓力測試或建立批次資料。它將其中包含的步驟運行您指定的固定次數。

如何使用#

1.
點擊 Add Step -> Loop。
2.
選擇 For Loop。
3.
設定 Loop Count:例如 10。
4.
可選地設定 Loop Delay(例如 1000ms)以避免達到速率限制。
For Loop Configuration
查看詳情:For 迴圈

範例:批次資料建立#

需要 50 個使用者進行分頁測試?
步驟 1: For Loop (計數: 50)
   |--> 步驟 2: POST /users (建立使用者)
專業提示:在 POST /users Body 中使用動態資料如 {{$randomUserName}},這樣您就不會建立 50 個相同的使用者。

3. ForEach 迴圈 (迭代陣列)#

這是最強大的迴圈類型。與固定的「For Loop」不同,ForEach Loop 迭代動態資料列表(陣列)——通常是先前 API 回應返回的。它允許您單獨處理集合中的每個項目。

如何使用#

1.
獲取列表:首先,有一個返回陣列的步驟(例如 GET /pets)。
在其 Post-processors 中,將陣列提取到變數 {{petList}}。
2.
新增 ForEach 步驟:
Reference Variable:petList(不帶大括號)。
Loop Variable Name:petItem(這代表迴圈中的目前項目)。
3.
使用項目:在迴圈內部,使用 {{petItem.id}}、{{petItem.name}} 等。
ForEach Loop Configuration
查看詳情:ForEach 迴圈

範例:驗證所有寵物#

檢查商店中的每隻寵物,確保它有有效的照片 URL。
步驟 1: GET /pets/findByStatus?status=available
   (提取 $.data 到 {{petList}})

步驟 2: ForEach Loop (列表: {{petList}} -> 項目: {{pet}})
   |--> 步驟 3: GET /pets/{{pet.id}}
   |--> 步驟 4: Condition (If {{pet.photoUrls}} 為空)
         |--> 步驟 5: Custom Script (記錄警告)

4. 組合流程控制#

當您嵌套這些控制項時,真正的威力就顯現出來了。
Loop + Condition:您可以迭代使用者 CSV(Loop)並檢查他們的年齡;如果超過 18 歲(Condition),則發送促銷電子郵件。
Condition + Loop:首先檢查「獲取產品列表」是否返回超過 100 個項目(Condition);如果是,則運行 Loop 刪除多餘項目。

真實案例:自我修復測試工作流程#

讓我們建構一個「智慧」工作流程,將系統帶入已知狀態。
目標:我們想驗證 GET /users/{id} 端點。
問題:使用者可能是「非活躍」的,導致 GET 返回 400。
解決方案:如果非活躍,先重新啟用,然後 GET。
實作:
1.
步驟 1:GET /users(獲取列表)
提取 $.data -> {{userList}}
2.
步驟 2:ForEach Loop(輸入:{{userList}})
3.
步驟 3(迴圈內部):Condition(檢查狀態)
If {{petItem.status}} Equals active:
運行 GET /users/{{petItem.id}}
斷言狀態 200
Else:
運行 POST /users/{{petItem.id}}/reactivate
斷言狀態 200
然後 運行 GET /users/{{petItem.id}}
這稱為 自我修復測試 (Self-Healing Tests)——在驗證資料之前修復資料的測試。

關鍵重點#

使用 Condition (If) 防止錯誤並處理邏輯(例如,如果登入失敗則跳過步驟)。
使用 For Loop 生成批次測試資料或簡單重複。
使用 ForEach Loop 迭代來自 API 回應的動態列表。
嵌套這些控制項以建構複雜、智慧的自動化管道。

下一步#

我們現在可以控制測試 如何 運行。但是 資料 呢?對於一個測試,硬編碼 "testuser" 是可以的,但是如果您需要使用 CSV 檔案中 100 個不同的特定使用者帳戶進行測試怎麼辦?
在下一章中,我們將掌握 資料驅動測試 (Data-Driven Testing)。
繼續閱讀 → 資料驅動測試
Modified at 2025-12-29 09:35:19
Previous
斷言與驗證
Next
資料驅動測試
Built with