REST Assured: полное руководство по тестированию API на Java
Изучаем REST Assured для автоматизации API тестирования: установка, базовые запросы, валидация JSON, аутентификация, десериализация в классы, спецификации и практические паттерны.
REST Assured: тестирование API на Java с нуля
REST Assured — самая популярная библиотека для тестирования REST API на Java. Предоставляет fluent API для отправки HTTP-запросов и валидации ответов. Это стандарт де-факто для Java QA Automation инженеров в корпоративном секторе.
Установка REST Assured
1<dependency>
2 <groupId>io.rest-assured</groupId>
3 <artifactId>rest-assured</artifactId>
4 <version>5.4.0</version>
5 <scope>test</scope>
6</dependency>Первый API тест на REST Assured
1import static io.restassured.RestAssured.*;
2import static org.hamcrest.Matchers.*;
3
4@Test
5public void getUsers() {
6 given()
7 .baseUri("https://api.example.com")
8 .header("Authorization", "Bearer token")
9 .when()
10 .get("/users")
11 .then()
12 .statusCode(200)
13 .body("users.size()", greaterThan(0))
14 .body("users[0].email", notNullValue());
15}Валидация JSON ответа
1@Test
2public void validateUserResponse() {
3 given()
4 .pathParam("id", 1)
5 .when()
6 .get("/users/{id}")
7 .then()
8 .statusCode(200)
9 .body("id", equalTo(1))
10 .body("name", not(emptyString()))
11 .body("email", containsString("@"))
12 .body("role", oneOf("admin", "user", "moderator"));
13}Спецификации для переиспользования
RequestSpecification и ResponseSpecification позволяют вынести общие настройки в одно место и переиспользовать их во всех тестах.
1public class ApiConfig {
2 public static RequestSpecification requestSpec() {
3 return new RequestSpecBuilder()
4 .setBaseUri("https://api.example.com")
5 .setContentType(ContentType.JSON)
6 .addHeader("Authorization", "Bearer " + getToken())
7 .build();
8 }
9
10 public static ResponseSpecification responseSpec() {
11 return new ResponseSpecBuilder()
12 .expectStatusCode(200)
13 .expectContentType(ContentType.JSON)
14 .build();
15 }
16}
17
18// Использование в тестах
19@Test
20public void getUser() {
21 given()
22 .spec(ApiConfig.requestSpec())
23 .when()
24 .get("/users/1")
25 .then()
26 .spec(ApiConfig.responseSpec())
27 .body("name", notNullValue());
28}Десериализация ответа в Java объекты
1// POJO класс
2public class User {
3 private int id;
4 private String name;
5 private String email;
6 // getters, setters
7}
8
9// Десериализация
10@Test
11public void deserializeUser() {
12 User user = given()
13 .spec(requestSpec)
14 .when()
15 .get("/users/1")
16 .then()
17 .statusCode(200)
18 .extract()
19 .as(User.class);
20
21 assertThat(user.getName()).isNotEmpty();
22 assertThat(user.getEmail()).contains("@");
23}Изучи REST Assured на курсе Java QA Automation
На курсе Java QA Automation от ThreadQA REST Assured изучается как основной инструмент API-тестирования — от базовых запросов до сложных паттернов с десериализацией и спецификациями. Практика на реальном API-проекте. 90 уроков, первые уроки бесплатно.