Рубрики
Без рубрики

Тестирование API с помощью Java и БУДЬТЕ уверены – получение начатый

Обзор REST Assured – это библиотека Java с открытым исходным кодом, которая облегчает автоматическое тестирование o… С пометкой java, тестирование, качество кода, учебник.

БУДЬТЕ уверены – это библиотека Java с открытым исходным кодом, которая облегчает автоматическое тестирование конечных точек API. В этом посте я хочу пройтись по шагам, необходимым для запуска и запуска некоторых базовых тестов REST Assured на вашем локальном компьютере.

Прежде чем углубиться в гайки и болты REST Assured, что такое автоматическое тестирование API?

Пирамида тестов визуально отображает типы тестов и дает некоторые общие рекомендации о том, сколько из них нужно создать. Нам нужно много модульных тестов и небольшое количество сквозных тестов пользовательского интерфейса.

В середине пирамиды находится тестирование API. Тесты API проверяют приложение на уровне API и не включают пользовательский интерфейс (UI). Из-за этого тесты API обычно выполняются быстрее и менее хрупки, чем тесты пользовательского интерфейса.

В прошлом я использовал такие инструменты, как Почтальон и Каратэ для автоматического тестирования API. Недавно я начал изучать REST Assured, предоставив мне еще один инструмент тестирования API.

Корнишон обычно используется для описания поведения приложения с точки зрения конечного пользователя и может использоваться с такими инструментами, как Cucumber, для создания автоматизированных тестов. Корнишон использует знакомый синтаксис “Дано/Когда/тогда”.

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

Итак, как выглядит тест на уверенность в себе? Давайте начнем с основ.

    @Test
    public void checkEmployeeStatus() {
        // @formatter:off
        given().
        when().
                get("http://dummy.restapiexample.com/api/v1/employees").
        then().
                assertThat().
                statusCode(200);
        // @formatter:on
    }

Этот пример, вероятно, достаточно понятен сам по себе. Мы просто делаем запрос на получение и проверяем, что код статуса равен 200.

Теперь давайте посмотрим, что вам нужно сделать, чтобы запустить этот простой пример на вашем компьютере.

В конечном счете мы просто создаем классы Java, которые будут использовать библиотеку REST Assured. Вы можете запускать тесты на macOS, Linux или Windows. Вам также потребуется установить Java JDK .

Для IDE вы можете использовать все, что вам удобно. Я использую Community Edition IntelliJ IDEA , но, конечно, эти концепции будут применяться к таким IDE, как Eclipse, или даже к простому текстовому редактору. В этом пошаговом руководстве я буду ссылаться на IntelliJ IDEA.

Откройте IDEA и создайте новый проект Maven. Чтобы запустить наш простой пример, нам нужно будет сделать пару вещей.

  • Обновите свой pom-файл, чтобы включить в него необходимые и проверяемые зависимости:

        
            io.rest-assured
            rest-assured
            4.2.0
            test
        
        
            org.testng
            testng
            7.3.0
            test
        
    
  • Создайте класс Java в src/test/java :
import org.testng.annotations.Test;

import static io.restassured.RestAssured.given;

public class HelloWorld {

    @Test
    public void checkEmployeeStatus() {
        // @formatter:off
        given().
        when().
                get("http://dummy.restapiexample.com/api/v1/employees").
        then().
                assertThat().
                statusCode(200);
        // @formatter:on
    }
}

Щелкните правой кнопкой мыши метод тестирования и запустите тест:

Если вы получите сообщение об ошибке тестирования “Тестирование по умолчанию отключает загрузку DTD с незащищенного URL”, просто следуйте инструкциям в сообщении и используйте аргумент [-[-Testng.dtd.http=true] в вашей конфигурации запуска.

Надеюсь, вы увидите успешный тест:

Действительно ли этот тест делает то, что мы думаем? Давайте выясним это, заставив его потерпеть неудачу. Измените конечную точку на что-то недопустимое, например http://dummy.restapiexample.com/api/v1/employees-invalid

Запустите тест еще раз. Он должен завершиться ошибкой с сообщением Ожидаемый код состояния <200> , но был <404> . Это хорошо, потому что это показывает, что наш тест работает так, как мы ожидаем, а также показывает, что мы получаем 404 с недопустимой конечной точкой. Продолжайте и вернитесь к действительному URL-адресу и снова убедитесь, что он прошел.

Теперь давайте создадим еще один тест с недопустимой конечной точкой, чтобы убедиться, что мы получаем ожидаемый 404:

@Test
    public void checkInvalidUrlReturns404() {
        // @formatter:off
        given().
        when().
                get("http://dummy.restapiexample.com/api/v1/employees-invalid").
        then().
                assertThat().
                statusCode(404);
        // @formatter:on
    }

Запустите этот тест и убедитесь, что он тоже зеленый.

Просмотр данных, возвращенных с конечной точки

Итак, теперь у нас есть пара базовых тестов. Давайте вернемся к нашему первому тесту с допустимой конечной точкой. Какие данные возвращаются с этой конечной точки?

Наш текущий тест не проверяет какой-либо контент, и нет журналов для отображения возвращенных данных. Давайте изменим это, добавив log().body() в тест:

@Test
    public void checkEmployeeStatus() {
        // @formatter:off
        given().
        when().
                get("http://dummy.restapiexample.com/api/v1/employees").
        then().
                assertThat().
                statusCode(200).
                log().body();
        // @formatter:on
    }

Запустите тест. Вы должны увидеть ответ JSON в журнале вашей консоли:

Это круто, но в реальном мире вы можете захотеть войти только при сбоях. Это можно сделать с помощью log().если проверка завершится неудачей() . Продолжайте и обновите тест, чтобы регистрировать его только в случае сбоя теста. Изменение если проверка не удалась необходимо применить до проверки кода состояния, например:

 @Test
    public void checkEmployeeStatus() {
        // @formatter:off
        given().
        when().
                get("http://dummy.restapiexample.com/api/v1/employees").
        then().
                assertThat().
                log().ifValidationFails().
                statusCode(200);
        // @formatter:on
    }

Конечно, вы должны убедиться, что он работает должным образом, допустив сбой и подтвердив, что вы получили журнал.

Возможно, вы заметили, что заверенные заявления завернуты в @форматировщик:выключен и @форматировщик:на тегах. Я делаю это, потому что мне нравится делать отступы под строками корнишона (учитывая/когда/тогда/и), но ИДЕЯ переформатировать код функция не соответствует этому стандарту. Я выключаю форматировщик, потому что IDEA переформатирование кода уничтожит мое форматирование отступов, если я этого не сделаю.

Чтобы это сработало, мне также нужно было “включить маркеры форматирования в комментариях” в настройках стиля кода IDEA.

Так что, надеюсь, это даст вам почувствовать силу уверенности в себе. В моем следующем посте я собираюсь осветить некоторые более продвинутые темы, такие как проверка полезной нагрузки, проверка схемы JSON, а также публикации и удаления.

Вы можете найти полный код для этой серии сообщений в блоге в мой проект на Github .

Счастливого тестирования!

Оригинал: “https://dev.to/leading-edje/testing-your-api-with-java-and-rest-assured-a15”