17. REST API. Пишем автотесты с Rest assured - qa-guru/knowledge-base GitHub Wiki

REST API (Representational State Transfer API) — способ взаимодействия сайтов и веб-приложений с сервером.

Для чего нужны тесты на REST API

С помощью REST API кодовая база тестов получается более стабильной и помогает выполнять их быстрее. Также во время выполнения тестов на REST API машине не приходится каждый раз открывать окно браузера, что положительно сказывается на производительности.

Подключаем библиотеку

Для работы с REST-службами на Java используется библиотека REST Assured.
Сайт | GitHub

Для подключения библиотеки к проекту необходимо добавить в раздел dependencies файла build.gradle следующую строчку кода:

dependencies {
    testImplementation(
        "io.rest-assured:rest-assured:5.1.0"
    )
} 

Given-When-Then

Given-When-Then — стиль представления тестов, разработанный Дэном Нортом и Крисом Мэттсом в рамках развития управляемого поведением (BDD).

Given-When-Then можно представить в виде «Если-Когда-Тогда»:

  • Given/Если: состояние перед началом выполнения сценария;
  • When/Когда: сам сценарий;
  • Then/Тогда: изменение состояния после выполнения сценария.

Пример:
Команда разработчиков создает фичу, позволяющую пользователям выводить деньги со счета. Свою идею они могут представить в виде Given-When-Then следующим образом:

  • Given/Если: у пользователя уже есть учетная запись в приложении и баланс, к примеру, 5 000 долларов;
  • When/Когда: пользователь хочет вывести 1 000 долларов;
  • Then/Тогда: баланс учетной записи становится равен 4 000 долларов и в историю транзакций добавляется новая запись об операции.

Пример теста на REST API

Простой тест на REST API может выглядеть следующим образом:

public class RestTests {
    @Test
    void checkTotal() {
        given()
                .when()
                .get("https://selenoid.autotests.cloud/status")
                .then()
                .body("total", is(20));
    }
}

Коды ответа HTTP

Коды ответа HTTP помогают понять успешно ли был выполнен запрос и если произошла ошибка, то какая и на чьей стороне. Коды ответов следует знать и доступны они в документации MDN web docs.