REST assured – це java бібліотека для автоматизації тестування API. Надає можливість відправляти запити та перевіряти відповіді від вашого API.
Для прикладу тесту я буду використовувати демо API https://reqres.in/ , а саме POST запит Create. Документація запиту:

Опис тесту:
- відправити POST запит з валідними даними на /api/users
- перевірити, що код відповіді становить 201
- перевірити, що поля name та job в body відповіді співпадають зі значеннями, котрі були відправлені в body запиту
Створюю звичайний maven проект:

В pom файл проекту додаю чотири залежності:
<dependencies>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.8.0</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
</dependencies>- rest-assured – сама бібліотека для виконання запитів та отримання відповідей від API
- testng – фреймворк для написання і виконання тестів
- hamcrest – бібліотека matchers, знадобиться під час перевірки response body
- jackson-databind – знадобиться для серіалізації Java об’єкту в JSON, під час передачі в request body необхідних даних
Створюю record User з полями name та job, які будуть містити значення для body запиту:
public record User(String name, String job) {}Детальніше про java records можна подивитись в нотатці Java Records – короткий опис та приклад використання
Сам тест з використанням бібліотеки rest-assured в базовій варіації має структуру, яка складається з трьох ключових секцій given, when та then:
- given – конфігурує що і куди буде відправлено
- when – виконання самого запиту з визначеними HTTP методом та кінцевим ендпоінтом
- then – отримання та перевірка відповіді
В тестовому класі SimpleApiTest створюю тест createUserTest:
package wiki.it.notes.api.tests;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import org.testng.annotations.Test;
public class SimpleApiTest {
@Test
void createUserTest() {
var user = new User("Gunnar", "manager");
given()
.baseUri("https://reqres.in/api/")
.contentType("application/json")
.body(user)
.when()
.post("users")
.then()
.statusCode(201)
.body("name", equalTo(user.name()))
.body("job", equalTo(user.job()));
}
}- для зручності використання rest-assured та hamcrest роблю статичний імпорт io.restassured.RestAssured.* та org.hamcrest.Matchers.* (рядки 3-4)
- створюю об’єкт User з полями name та job
- викликом given() починаю формувати запит, встановлюю базовий URL, Content-Type, body (рядки 15-18)
- в body запиту передаю об’єкт User, котрий за допомогою jackson-databind буде автоматично конвертовано в необхідний JSON з полями name та job
- далі йде відправка методу post на ендпоінт /users
- викликом then() переходжу до перевірки відповіді на запит (рядки 22-24)
- при перевірці response body, для доступу до значення окремого поля, достатньо просто передати його назву в якості першого параметру (“name”, “job”)
- equalTo – hamcrest matcher за допомогою якого відбувається порівняння значення поля з JSON та очікуваного значення, яке береться з об’єкту User
Результат виконання:

Код прикладу на Github: