跳转到内容

5 分钟测试一个 REST API

目标:从一份 OpenAPI 规范出发,最终得到一个能够验证完整业务流程的自动化测试。

文件 ▸ 导入Ctrl+I),然后填入您的 openapi.json 的 URL。

Restorm 会构建出完整的目录树:每个标签一个文件夹,每个操作一个请求,参数带有类型, 文档一并保留,身份验证请求头也已经连同其变量预先接好。

OpenAPI 导入生成的、可直接使用的目录树:每个标签(pet、store、user)一个文件夹,每个操作一个预填好的请求,旁边是变量文件夹的首页子标签页

如果您的 API 没有规范文件,可以直接粘贴一条 curl 命令 —— 请参阅 导入 cURL 命令

打开导入过程创建的变量文件夹。基础 URL 已经在那里了;您只需补全导入为您准备好的 身份验证变量。

如果您要测试多个目标,可以再创建一个环境 —— smartbar 上的选择器可以一次性切换整个文件夹。

打开一个请求,点击发送。响应随即显示:状态码、耗时、响应头,以及在可折叠查看器中的正文。

如果您漏填了什么,URL 字段下方显示的解析后取值会告诉您。

右键 ▸ 添加 ▸ 场景。这条“创建、读回、删除”的流程:

HTTP 请求 “POST /clients”
└─response──► Assert (eq, 201)
└─► 设置变量 “clientId” ◄── 选择器 body.id
HTTP 请求 “GET /clients/{id}”
└─response──► Assert (eq, 200)
└─► 模式校验(客户的 JSON Schema)
HTTP 请求 “DELETE /clients/{id}”
└─response──► Assert (eq, 204)

这三个请求的 URL 中都使用了 {{clientId}}:第一步写入的运行期变量会被后续各步读取。

把每个断言的 done 端口接到下一个请求的 in 端口,即可把它们串联起来 —— 正是这一点保证了执行顺序。

点击运行。日志随之填充;在每一步之后加上一个 Log 动作,把真正重要的信息记录下来。

在关键断言的 else 输出上接一个 Throw 动作:这正是让 CI 作业失败的手段。

Terminal window
RESTORM_TOKEN=rstk_… restorm \
--open ./api.restorm \
--run "Parcours client" \
--headless \
--out run.log

全部通过时退出码为 0,否则为 1。GitHub Actions 与 GitLab CI 的示例请参阅 headless 执行与 CI