实用工具
| 输入 | min、max(数值)、seed |
| 输出 | result |
op | 返回 |
|---|---|
int | 介于 min 和 max 之间的一个整数 |
float | 一个浮点数 |
string | 一个长度为 length 的字符串 |
boolean | 一个布尔值 |
pick | 从 items 中抽取的一个元素 |
seed 字段(一个数字或一个字符串)让抽取变得确定:
正是它使得数据既多样、测试又可重现。
这也是它与 {{$random…}} 辅助函数的本质区别 —— 后者永远无法重现。
| 输入 | value、schema(字符串) |
| 输出 | valid、invalid、errors |
| 配置 | schema —— 一个 JSON Schema,可用 draft-07、2019-09 或 2020-12 |
要确认某个响应符合它的契约,这是首选工具。把 errors 接到一个 Log 上:
输出会逐条列出违规之处,让 CI 的一次失败直接就能拿来分析。
HTTP 请求 ──response[body]──► 模式校验 ├─ valid ──► (后续) ├─ invalid ──► Throw └─ errors ──► Log| 输入 | path(字符串) |
| 输出 | content(字符串) |
| 配置 | path —— 绝对路径,或相对于已打开的 .restorm 文件的路径 |
要让场景在您的机器和 CI 之间保持可移植,就该用相对路径。
| 输入 | 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 上。