現實世界中的測試並不總是一條直線。有時,如果登入失敗,您需要跳過一步,或者重複測試 100 次,或者迭代 API 返回的項目列表。Apidog 提供了強大的 流程控制 (Flow Control) 步驟,以建構適應和擴展的「智慧」測試場景。為什麼您需要流程控制#
如果沒有流程控制,您的測試場景只是一個靜態的請求列表 (A -> B -> C)。現實世界的測試需要邏輯。您可能需要條件執行(「如果 A 失敗,則停止」)、迴圈(「運行步驟 B 50 次」)或迭代(「對於列表中的每個產品,運行 B」)。流程控制為您提供了這種靈活性。
1. 條件 (If-Then-Else)#
Condition(條件)步驟允許您根據標準分支您的測試。如何使用#
2.
設定您的比較規則(例如 {{status_code}} 等於 200)。
範例:「安全」使用者刪除#
步驟 1: 建立使用者
(提取 $.id 到 {{userId}})
(提取狀態碼到 {{createStatus}})
步驟 2: Condition (If {{createStatus}} == 201)
|--> 步驟 3: 刪除使用者 (使用 {{userId}})
2. For 迴圈 (固定重複)#
For Loop 非常適合簡單的重複,如壓力測試或建立批次資料。它將其中包含的步驟運行您指定的固定次數。如何使用#
4.
可選地設定 Loop Delay(例如 1000ms)以避免達到速率限制。
範例:批次資料建立#
步驟 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.
Reference Variable:petList(不帶大括號)。
Loop Variable Name:petItem(這代表迴圈中的目前項目)。
3.
使用項目:在迴圈內部,使用 {{petItem.id}}、{{petItem.name}} 等。
範例:驗證所有寵物#
檢查商店中的每隻寵物,確保它有有效的照片 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.
提取 $.data -> {{userList}}
2.
步驟 2:ForEach Loop(輸入:{{userList}})
3.
步驟 3(迴圈內部):Condition(檢查狀態)If {{petItem.status}} Equals active:運行 GET /users/{{petItem.id}}
運行 POST /users/{{petItem.id}}/reactivate
然後 運行 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