REST Assured 是什么
REST Assured 是 Java 生态的接口测试库,用接近自然语言的方式组织请求与断言:given 里准备请求头、参数、认证与请求体,when 里发请求,then 里断言状态码、响应体字段与响应时间。它与 JUnit、TestNG 无缝集成,断言链式书写可读性强,适合把接口回归直接纳入 Java 项目的构建流水线。
基本信息
| 依赖坐标 | io.rest-assured:rest-assured,按需加 json-path 等解析组件 |
|---|---|
| 核心结构 | given 准备、when 发起、then 断言三段式 |
| 常用断言 | statusCode、body 字段路径取值、contentType、响应时间 |
| 参数化 | 基于 JUnit 参数化或数据驱动,多组输入复用同一用例 |
| 生态集成 | 与 Maven 或 Gradle、CI 流水线天然衔接 |
| 辅助能力 | JSON Schema 校验、请求响应日志开关、全局配置(baseURI 等) |
最小用例
最小用例
given()
.baseUri("https://api.example.com")
.header("Authorization", "Bearer " + token)
.queryParam("id", 42)
.when()
.get("/orders/detail")
.then()
.statusCode(200)
.body("data.status", equalTo("PAID"))
.body("data.amount", greaterThan(0));
// given 准备、when 发起、then 断言,失败信息带实际值,联调效率高典型使用场景
- 接口回归:核心接口断言状态码与关键字段,纳入每日构建。
- 契约校验:用 JSON Schema 锁定响应结构,结构破坏立刻失败。
- 鉴权场景:同一接口多组 token 与权限矩阵批量验证。
- 性能粗筛:断言响应时间上限,拦住明显退化。
- 联调支持:用测试用例固化接口行为,替代口口相传的接口文档补丁。
断言要落到业务字段:只断言状态码 200 会漏掉返回体里业务失败的情况。
凭据与地址外置:token、域名放进配置或环境变量,测试代码里不出现生产秘密。
数据自给自足:用例自己创建再清理数据,避免依赖固定测试数据的顺序。
断言层次与示例
| 层次 | 断言内容 | 示例 |
|---|---|---|
| 传输层 | 状态码与响应头 | statusCode(200)、contentType 校验 |
| 结构层 | 字段存在与类型 | JSON Schema 或字段类型断言 |
| 业务层 | 字段取值符合规则 | 订单状态与金额关系断言 |
| 时延层 | 响应时间上限 | time 小于约定阈值 |
失败信息要可读:链式断言天然输出实际值,配合明确的用例命名,排障一步到位。