Refactor petstore tests and refresh build setup

This commit is contained in:
2026-02-15 14:02:49 +03:00
parent 32f7be7cf0
commit b97c369f46
16 changed files with 655 additions and 316 deletions

130
README.md
View File

@@ -1,80 +1,64 @@
# Автотесты для Petstore API
# OTUS Rest-assured Homework 3
Этот проект содержит набор автотестов для [Swagger Petstore API](https://petstore.swagger.io/v2) с использованием библиотек **Rest-assured** и **JUnit 5**. Проект оформлен как Maven-проект с поддержкой JDK 24.
## Цель проекта
Автоматизировать API-сценарии для `https://petstore.swagger.io` с использованием Rest-assured, JUnit Jupiter и quality gates (Checkstyle + SpotBugs).
## Стек технологий
- Java 21
- Maven
- Rest-assured `6.0.0`
- JUnit Jupiter `6.0.2`
- Jackson Databind `2.21.0`
- Commons Codec `1.21.0`
- Maven Surefire Plugin `3.5.4`
- Maven Compiler Plugin `3.15.0`
- Checkstyle (`maven-checkstyle-plugin` `3.6.0`)
- SpotBugs (`spotbugs-maven-plugin` `4.9.8.2`)
## Реализованные сценарии
1. `POST /pet` + `GET /pet/{id}`:
- создание питомца;
- повторное чтение по id;
- проверка, что вернулся именно созданный объект.
2. `GET /pet/{id}`:
- проверка схемы ответа через Json Schema Validator.
3. Негативные сценарии:
- `POST /pet` с malformed JSON возвращает ошибку;
- `GET /pet/{id}` для удаленного/несуществующего id возвращает `404`;
- `GET /pet/findByStatus` с невалидным статусом возвращает пустой список.
## Архитектура
- 2-уровневый дизайн:
- `service` слой (HTTP-вызовы + спецификации);
- `tests` слой (сценарии).
- Тесты создают сервис напрямую (`new PetService()`), без DI-фреймворка.
## Структура проекта
```plaintext
hw3/
├── pom.xml # Maven-конфигурация
├── README.md # Readme файл
└── src
└── test
└── java
└── ru
└── otus
└── petstore
└── PetStoreTests.java # Автотесты
- `src/main/java/ru/otus/petstore/config` — конфигурация
- `src/main/java/ru/otus/petstore/model` — модели API (`Pet`, `Category`, `Tag`)
- `src/main/java/ru/otus/petstore/service` — сервисы API
- `src/test/java/ru/otus/petstore/tests` — автотесты (позитивные и негативные сценарии)
- `src/test/java/ru/otus/petstore/util` — фабрика тестовых данных
- `src/test/resources/schemas` — JSON schema
## Запуск
### 1. Только тесты
```bash
mvn test
```
## Обзор
### 2. Полная проверка (тесты + Checkstyle + SpotBugs)
```bash
mvn verify
```
**Rest-assured** — это библиотека для тестирования REST API, предоставляющая удобный DSL (domain-specific language)
для формирования HTTP-запросов, их отправки и проверки ответов. В данном проекте с её помощью отправляются GET и POST
запросы к Petstore API, а также производятся проверки кодов ответа и содержимого JSON.
## Параметры запуска
- `base.uri` (по умолчанию `https://petstore.swagger.io`)
- `base.path` (по умолчанию `/v2`)
### Реализованные сценарии тестирования
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).
**PS.** Почему-то сервис отдает ответ 200 я решил оставить данный тест.
Показать что вся цепочка тестов не останавливается и продолжает работать дальше
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
## Лицензия
Проект предназначен для образовательных целей.
```
---
Файл REDME.md содержит краткое описание проекта, объясняет суть реализации тестов с Rest-assured, описывает
основные сценарии тестирования, структуру проекта и шаги для запуска автотестов. Вы можете его адаптировать под
свои нужды или дополнить дополнительной информацией.
```
Пример:
```bash
mvn "-Dbase.uri=https://petstore.swagger.io" "-Dbase.path=/v2" test
```