RestAssured 介绍
REST Assured 是一种用于测试 RESTful API 的 Java 测试框架,它使开发人员/测试人员能够轻松地编写和执行 API 测试。它的设计旨在使 API 测试变得简单和直观,同时提供了丰富的功能和灵活性。以下是 REST Assured 的一些重要特点和用法:
发起 HTTP 请求:REST Assured 允许你轻松地构建和发起 HTTP GET、POST、PUT、DELETE 等类型的请求。你可以指定请求的 URL、头部、参数、体等信息。
链式语法:REST Assured 使用链式语法,使测试代码更加可读和易于编写。你可以按照一种自然的方式描述你的测试用例,而不需要编写大量的代码。
断言和校验:REST Assured 提供了丰富的校验方法,可以用于验证 API 响应的状态码、响应体、响应头等。你可以根据你的测试需求添加多个断言。
支持多种数据格式:REST Assured 支持多种数据格式,包括 JSON、XML、HTML、Text 等。你可以使用适当的方法来处理不同格式的响应数据。
集成 BDD(行为驱动开发):REST Assured 可以与 BDD 框架(如 Cucumber)结合使用,使你可以更好地描述和管理测试用例。
模拟 HTTP 服务器:REST Assured 还包括一个模拟 HTTP 服务器的功能,允许你模拟 API 的行为以进行端到端测试。
可扩展性:REST Assured 可以通过插件和扩展进行定制,以满足特定的测试需求。
总的来说,REST Assured 是一个功能强大且易于使用的 API 测试框架,它可以帮助你轻松地进行 RESTful API 测试,并提供了许多工具来验证 API 的正确性和性能。无论是初学者还是有经验的开发人员/测试人员,REST Assured 都是一个非常有价值的工具,可用于快速的上手 API 自动化 测试。
项目结构
Gradle 构建的版本
- src
- main
- java
- (应用的主要源代码)
- test
- java
- api
- (REST Assured 测试代码)
- UsersAPITest.java
- ProductsAPITest.java
- util
- TestConfig.java
- resources
- (配置文件、测试数据等)
- (其他项目文件和资源)
- build.gradle (Gradle 项目配置文件)
在这个示例目录结构中:
- src/test/java/api 目录用于存放 REST Assured 的测试类,每个测试类通常涉及到一个或多个相关的 API 端点的测试。例如,UsersAPITest.java 和 ProductsAPITest.java 可以包含用户管理和产品管理的测试。
- src/test/java/util 目录可用于存放测试中共享的工具类,例如用于配置 REST Assured 的 TestConfig.java。
- src/test/resources 目录可以包含测试数据文件、配置文件等资源,这些资源可以在测试中使用。
- build.gradle 是 gradle 项目的配置文件,它用于定义项目的依赖项、构建配置以及其他项目设置。
Maven 构建的版本
- src
- main
- java
- (应用的主要源代码)
- test
- java
- api
- (REST Assured 测试代码)
- UsersAPITest.java
- ProductsAPITest.java
- util
- TestConfig.java
- resources
- (配置文件、测试数据等)
- (其他项目文件和资源)
- pom.xml (Maven 项目配置文件)
在这个示例目录结构中:
- src/test/java/api 目录用于存放 REST Assured 的测试类,每个测试类通常涉及到一个或多个相关的 API 端点的测试。例如,UsersAPITest.java 和 ProductsAPITest.java 可以包含用户管理和产品管理的测试。
- src/test/java/util 目录可用于存放测试中共享的工具类,例如用于配置 REST Assured 的 TestConfig.java。
- src/test/resources 目录可以包含测试数据文件、配置文件等资源,这些资源可以在测试中使用。
- pom.xml 是 Maven 项目的配置文件,它用于定义项目的依赖项、构建配置以及其他项目设置。
项目依赖
- JDK 1.8+ ,我使用的 JDK 19
- Gradle 6.0+ 或 Maven 3.0+,我使用的 Gradle 8.44 和 Maven 3.9.5
- RestAssured 4.3.3+,我使用的是最新的 5.3.1 版本
语法示例
以下是一个简单的 RestAssured 语法示例,演示如何执行一个 GET 请求并验证响应:
首先,确保你的 Gradle 或 Maven 项目中已添加了 RestAssured 依赖。
Gradle 依赖:
dependencies {
implementation 'io.rest-assured:rest-assured:5.3.1'
}
Maven 依赖:
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.3.1</version>
</dependency>
接下来,创建一个测试类,编写以下代码:
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;
public class RestAssuredDemo {
@Test
public void testGetRequest() {
// 设置基本 URI,这里以 JSONPlaceholder 为例
RestAssured.baseURI = "https://jsonplaceholder.typicode.com";
// 发送 GET 请求,并保存响应
Response response = given()
.when()
.get("/posts/1")
.then()
.extract()
.response();
// 打印响应的 JSON 内容
System.out.println("Response JSON: " + response.asString());
// 验证状态码为 200
response.then().statusCode(200);
// 验证响应中的特定字段值
response.then().body("userId", equalTo(1));
response.then().body("id", equalTo(1));
response.then().body("title", equalTo("sunt aut facere repellat provident occaecati excepturi optio reprehenderit"));
response.then().body("body", equalTo("quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"));
}
}
上述代码执行了一个 GET 请求到 JSONPlaceholder 的 /posts/1
端点,并验证了响应的状态码和特定字段的值。你可以根据你的需求修改基本 URI 和验证条件。
在这个示例中,我们使用了 TestNG 测试框架,但你也可以使用其他测试框架,例如 JUnit。确保你的测试类中包含了合适的导入语句,并根据需要进行适当的配置。
这是一个简单的 RestAssured 语法示例,用于执行 GET 请求和验证响应。你可以根据项目的需求和接口的复杂性来构建更复杂的测试用例。
欢迎关注软件测试同学的公众号“软件测试同学”,原创 QA 技术文章第一时间推送。