實用工具
Random(隨機)
Section titled “Random(隨機)”| 輸入 | min、max(數字)、seed |
| 輸出 | result |
op | 回傳 |
|---|---|
int | 介於 min 與 max 之間的整數 |
float | 一個浮點數 |
string | 長度為 length 個字元的字串 |
boolean | 一個布林值 |
pick | 從 items 中抽出一個項目 |
seed 欄位(一個數字或字串)會讓抽取變成確定的:這正是既能有多樣資料、又
能有可重現測試的關鍵。這也是它和 {{$random…}} helper 之間最本質的差別 — 後者永
遠不可重現。
Schema validate(結構描述驗證)
Section titled “Schema validate(結構描述驗證)”| 輸入 | value、schema(字串) |
| 輸出 | valid、invalid、errors |
| 設定 | schema — 一份 JSON Schema,可以是 draft-07、2019-09 或 2020-12 |
要確認一個回應遵守它的合約,這是首選工具。把 errors 接到一個 Log 上:輸出會
逐條列出每個違規之處,讓一次 CI 失敗馬上就能拿來用。
HTTP 請求 ──response[body]──► Schema validate ├─ valid ──► (後續) ├─ invalid ──► Throw └─ errors ──► LogRead file(讀取檔案)
Section titled “Read file(讀取檔案)”| 輸入 | path(字串) |
| 輸出 | content(字串) |
| 設定 | path — 絕對路徑,或相對於已開啟的 .restorm 檔案 |
想讓情境在您的機器與 CI 之間都能通用,就該用相對路徑。
Write file(寫入檔案)
Section titled “Write file(寫入檔案)”| 輸入 | path(字串)、content |
| 輸出 | 無 |
| 設定 | path、mode:replace(預設)或 append |
Log(記錄)
Section titled “Log(記錄)”| 輸入 | message(字串)、data |
| 輸出 | 無 |
| 設定 | level:debug、info、warn、error |
這就是那個負責留下軌跡的節點。在執行記錄裡,以及在
命令列的輸出上,預設只會顯示它的
條目 — 引擎自己的條目要加上 --all-logs 才會出現。
換句話說:您用 Log 寫下的東西,就是您在 CI 產出物裡會找到的東西。
Assert(斷言)
Section titled “Assert(斷言)”| 輸入 | a(觀察到的值)、b(預期的值)、message(字串) |
| 輸出 | then(通過)、else(失敗) |
| 設定 | operator、a、b、message |
可用的運算子:
eq · ne · lt · lte · gt · gte · contains · isString ·
isNumber · isBoolean · isArray · isObject · isNull · exists ·
isEmpty · matchesRegex · isOneOf · deepEquals · lengthEq ·
lengthGt · lengthLt
message 欄位決定了失敗在記錄裡看不看得懂:請把「原本預期什麼」寫進去,而不是寫
「錯誤」。
Throw(拋出錯誤)
Section titled “Throw(拋出錯誤)”| 輸入 | message(字串) |
| 輸出 | 無 — 這個節點沒有 done 連接埠 |
| 設定 | message |
刻意讓執行失敗。這正是在 CI 裡取得結束代碼 1 的手段:把它接在關鍵斷言的 else
輸出上,或接在結構描述驗證的 invalid 上。