Refactor petstore tests and refresh build setup
This commit is contained in:
130
README.md
130
README.md
@@ -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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user