From 5842dad2be4374f63dec07f5fdb9b23a50a478f3 Mon Sep 17 00:00:00 2001 From: spawn Date: Fri, 16 May 2025 02:51:43 +0300 Subject: [PATCH] docs: added comments to code and created README.md --- README.md | 77 +++++++++++++++++++ .../java/ru/otus/petstore/PetStoreTests.java | 6 +- 2 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5c1d248 --- /dev/null +++ b/README.md @@ -0,0 +1,77 @@ +# Автотесты для Petstore API + +Этот проект содержит набор автотестов для [Swagger Petstore API](https://petstore.swagger.io/v2) с использованием библиотек **Rest-assured** и **JUnit 5**. Проект оформлен как Maven-проект с поддержкой JDK 24. + +## Структура проекта +```plaintext +hw3/ +├── pom.xml # Maven-конфигурация +├── README.md # Readme файл +└── src + └── test + └── java + └── ru + └── otus + └── petstore + └── PetStoreTests.java # Автотесты +``` + +## Обзор + +**Rest-assured** — это библиотека для тестирования REST API, предоставляющая удобный DSL (domain-specific language) +для формирования HTTP-запросов, их отправки и проверки ответов. В данном проекте с её помощью отправляются GET и POST +запросы к Petstore API, а также производятся проверки кодов ответа и содержимого JSON. + +### Реализованные сценарии тестирования + +1. **Тест: Поиск питомцев со статусом "available"** + Отправляется GET-запрос на `/pet/findByStatus` с параметром `status=available`. + **Ожидаемый результат:** HTTP 200 и у всех питомцев в ответе значение поля `status` равно `"available"`. + +2. **Тест: Поиск питомцев по несуществующему статусу** + Отправляется GET-запрос с параметром `status=invalidStatus`. + **Ожидаемый результат:** HTTP 200 и пустой массив в ответе. + +3. **Тест: Успешное создание питомца** + Отправляется POST-запрос с корректными данными для создания питомца. + **Ожидаемый результат:** HTTP 200 и возвращаемое поле `name` совпадает с переданным значением. + +4. **Тест: Ошибка при создании питомца без поля "name"** + Отправляется POST-запрос, в котором отсутствует обязательное поле `name`. + **Ожидаемый результат:** API возвращает ошибку (код 400 или 405). + +5. **Тест: Ошибка при передаче некорректного JSON** + Отправляется POST-запрос с ошибочным JSON (без закрывающей фигурной скобки). + **Ожидаемый результат:** API возвращает ошибку (код 400 или 405). + +## Как запустить тесты + +1. **Клонируйте репозиторий:** + ```bash + git clone https://git.kovbasa.ru/otus-autotests/hw3.git + +2. **Перейдите в папку проекта:** + + ```bash + cd hw3 + +3. **Запустите тесты командой:** + ```bash + mvn test + +После выполнения тестов в консоли вы увидите нумерованные сообщения с результатами (например, "1. Test: Find pets by +'available' status - Passed"). + +## Зависимости +- **Rest-assured**: 4.5.1 + +- **JUnit Jupiter (API & Engine)**: 5.9.1 + +## Лицензия + +Проект предназначен для образовательных целей. + ``` + --- + Этот файл **README.md** даёт краткое описание проекта, объясняет суть реализации тестов с Rest-assured, описывает + основные сценарии тестирования, структуру проекта и шаги для запуска автотестов. Вы можете его адаптировать под + свои нужды или дополнить дополнительной информацией. \ No newline at end of file diff --git a/src/test/java/ru/otus/petstore/PetStoreTests.java b/src/test/java/ru/otus/petstore/PetStoreTests.java index 1d93742..360b66e 100644 --- a/src/test/java/ru/otus/petstore/PetStoreTests.java +++ b/src/test/java/ru/otus/petstore/PetStoreTests.java @@ -94,11 +94,13 @@ public class PetStoreTests { /** * Тест 4: POST /pet для создания питомца с невалидными данными (без поля "name"). - * Ожидается, что API вернёт ошибку (400 или 405). + * Ожидается, что API вернёт ошибку (400 или 405). Почему-то сервис отдает ответ 200 + * я решил оставить данный тест. Показать что вся цепочка тестов не останавливается и + * продолжает работать дальше */ @Test @Order(4) - @DisplayName("4. Test: Create pet missing 'name' field") + @DisplayName("4. Test: Fail to create pet without 'name' field") public void testCreatePetMissingName() { int petId = (int) (System.currentTimeMillis() % Integer.MAX_VALUE); String requestBody = "{\n" +