SuperAPI AI 工具集

rest assured api testing

测试与质量

查看项目

更新于 10-16 10:30

技能介绍

用途

该技能面向使用 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 契约校验的项目。

限制

资料未提供该技能的收费、价格、平台、效果等额外信息。