用途
该技能面向使用 Java 与 REST Assured 进行接口测试的场景,帮助编写、审查或调试 REST Assured 测试代码。
主要能力
- 以 Given-When-Then 的 BDD 语法组织每个测试。
- 通过 RequestSpecBuilder 与 ResponseSpecBuilder 复用公共请求/响应配置(请求规格与响应规格)。
- 将响应反序列化为 POJO,实现编译期类型安全。
- 使用 JSON Schema 校验响应结构。
- 在失败时记录请求与响应以便调试。
项目结构
技能给出如下推荐结构:
src/
main/java/com/example/
models/
User.java
Product.java
ApiError.java
specs/
RequestSpecs.java
ResponseSpecs.java
utils/
AuthHelper.java
TestDataHelper.java
test/java/com/example/
tests/
BaseApiTest.java
UsersApiTest.java
ProductsApiTest.java
AuthApiTest.java
schemas/
user-schema.json
product-schema.json
error-schema.json
test/resources/
test-data/
users.json
config.properties
pom.xml
Maven 依赖
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.16.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
使用方式
技能以示例代码演示多种用法:
- POJO 模型:使用 Lombok 的 @Data、@Builder、@NoArgsConstructor、@AllArgsConstructor 以及 @JsonIgnoreProperties(ignoreUnknown = true) 定义 User、CreateUserRequest、ApiError。
- 请求/响应规格:RequestSpecs 提供 baseSpec、authSpec、adminSpec;ResponseSpecs 提供 successResponse、createdResponse、noContentResponse、notFoundResponse、validationErrorResponse。
- 基类:BaseApiTest 在 @BeforeClass 中启用 enableLoggingOfRequestAndResponseIfValidationFails() 并设置请求规格,提供 getAuthToken。
- CRUD 测试:创建、按 ID 查询、更新、删除、带分页的列表查询。
- JSON Schema 校验:使用 matchesJsonSchemaInClasspath 校验 schemas/user-schema.json。
- 认证测试:有效凭证登录、无效凭证登录、受保护端点的令牌校验。
- 校验错误测试:缺失必填字段、非法邮箱格式。
- 响应提取:提取单值 path、反序列化为 POJO、提取列表、提取响应头、提取响应时间。
- 文件上传:multipart 上传文件并校验文件名与大小。
最佳实践(技能中列出)
- 使用 Given-When-Then 结构,清晰分离准备、动作与断言。
- 创建可复用规格,使用 RequestSpecBuilder 与 ResponseSpecBuilder 保持 DRY。
- 反序列化为 POJO,以类型安全模型在编译期发现问题。
- 校验 Schema,通过 JSON schema 校验确保 API 契约被遵守。
- 失败时记录日志,使用 enableLoggingOfRequestAndResponseIfValidationFails()。
- 使用 Hamcrest 匹配器,与 REST Assured 断言良好组合。
- 清理测试数据,在 @AfterMethod 中删除已创建资源。
- 使用 DataProvider 参数化,避免为相似场景重复编写测试。
- 检查响应时间,在 API 测试中加入性能断言。
- 测试负向用例。
适用场景
适用于使用 Java 技术栈、以 REST Assured 对 HTTP 接口进行功能验证、契约校验与回归测试的团队,尤其是需要统一规格配置、类型安全模型与 Schema 契约校验的项目。
限制
资料未提供该技能的收费、价格、平台、效果等额外信息。