Как распаковать список объектов из ответа API с помощью Rest Assured?

«Как распаковать список объектов из ответа API с помощью Rest Assured?» — вопрос из категории API тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Rest Assured для извлечения списка из JSON-ответа API чаще всего используется комбинация методов .extract() и .jsonPath(). Это позволяет декомпозировать сложный ответ и работать с данными в тестах.

Базовый пример извлечения списка строк:

List<String> userNames = given()
    .when()
        .get("/api/users")
    .then()
        .extract()
        .jsonPath()
        .getList("name", String.class);
// Предполагается, что ответ имеет структуру: [ {"name": "Alice"}, {"name": "Bob"} ]

Извлечение списка сложных объектов (POJO):

// Предварительно определенный класс User
List<User> allUsers = given()
    .get("/api/users")
    .jsonPath()
    .getList("", User.class); // Пустой путь "" указывает на корень массива

Альтернативный способ с .as() для десериализации всего ответа:

User[] usersArray = given()
    .get("/api/users")
    .as(User[].class);
List<User> users = Arrays.asList(usersArray);

Ключевые моменты для QA-инженера:

  • .extract() — начинает процесс извлечения данных из валидированного ответа.
  • .jsonPath() — предоставляет доступ к мощному инструменту JsonPath для навигации по JSON (например, getList("users[0].projects")).
  • Типизация — всегда указывайте ожидаемый класс (String.class, User.class), чтобы избежать ошибок ClassCastException.
  • Валидация перед извлечением — часто имеет смысл сначала проверить статус-код (.statusCode(200)), а затем извлекать данные.