123 lines
4.8 KiB
Markdown
123 lines
4.8 KiB
Markdown
# API Endpoints Tests
|
||
|
||
Этот модуль содержит pytest тесты для всех API эндпоинтов проекта NIN Excel Parsers.
|
||
|
||
## Структура
|
||
|
||
```
|
||
tests/
|
||
├── __init__.py
|
||
├── conftest.py # Конфигурация pytest
|
||
├── test_all_endpoints.py # Основной файл для запуска всех тестов
|
||
├── test_upload_endpoints.py # Тесты API эндпоинтов загрузки данных
|
||
├── test_svodka_pm_endpoints.py # Тесты API svodka_pm эндпоинтов
|
||
├── test_svodka_ca_endpoints.py # Тесты API svodka_ca эндпоинтов
|
||
├── test_monitoring_fuel_endpoints.py # Тесты API monitoring_fuel эндпоинтов
|
||
├── test_parsers_direct.py # Прямое тестирование парсеров
|
||
├── test_upload_with_local_storage.py # Тестирование загрузки в локальный storage
|
||
├── test_getters_with_local_storage.py # Тестирование геттеров с локальными данными
|
||
├── test_data/ # Тестовые данные
|
||
│ ├── svodka_ca.xlsx
|
||
│ ├── pm_plan.zip
|
||
│ └── monitoring.zip
|
||
├── local_storage/ # Локальный storage (создается автоматически)
|
||
│ ├── data/ # Сохраненные DataFrame
|
||
│ └── metadata/ # Метаданные объектов
|
||
├── requirements.txt # Зависимости для тестов
|
||
└── README.md # Этот файл
|
||
```
|
||
|
||
## Установка зависимостей
|
||
|
||
```bash
|
||
pip install -r tests/requirements.txt
|
||
```
|
||
|
||
## Запуск тестов
|
||
|
||
### Запуск всех тестов
|
||
```bash
|
||
cd tests
|
||
python test_all_endpoints.py
|
||
```
|
||
|
||
### Запуск конкретных тестов
|
||
```bash
|
||
# API тесты (требуют запущенный сервер)
|
||
pytest test_upload_endpoints.py -v
|
||
pytest test_svodka_pm_endpoints.py -v
|
||
pytest test_svodka_ca_endpoints.py -v
|
||
pytest test_monitoring_fuel_endpoints.py -v
|
||
|
||
# Прямые тесты парсеров (не требуют сервер)
|
||
pytest test_parsers_direct.py -v
|
||
pytest test_upload_with_local_storage.py -v
|
||
pytest test_getters_with_local_storage.py -v
|
||
|
||
# Все тесты с локальным storage
|
||
pytest test_parsers_direct.py test_upload_with_local_storage.py test_getters_with_local_storage.py -v
|
||
```
|
||
|
||
## Предварительные условия
|
||
|
||
1. **API сервер должен быть запущен** на `http://localhost:8000` (только для API тестов)
|
||
2. **Тестовые данные** находятся в папке `test_data/`
|
||
3. **Локальный storage** используется для прямого тестирования парсеров
|
||
|
||
## Последовательность тестирования
|
||
|
||
### Вариант 1: API тесты (требуют запущенный сервер)
|
||
1. **Загрузка данных** (`test_upload_endpoints.py`)
|
||
- Загрузка `svodka_ca.xlsx`
|
||
- Загрузка `pm_plan.zip`
|
||
- Загрузка `monitoring.zip`
|
||
|
||
2. **Тестирование эндпоинтов** (в любом порядке)
|
||
- `test_svodka_pm_endpoints.py`
|
||
- `test_svodka_ca_endpoints.py`
|
||
- `test_monitoring_fuel_endpoints.py`
|
||
|
||
### Вариант 2: Прямые тесты (не требуют сервер)
|
||
1. **Тестирование парсеров** (`test_parsers_direct.py`)
|
||
- Проверка регистрации парсеров
|
||
- Проверка локального storage
|
||
|
||
2. **Загрузка в локальный storage** (`test_upload_with_local_storage.py`)
|
||
- Загрузка всех файлов в локальный storage
|
||
- Проверка сохранения данных
|
||
|
||
3. **Тестирование геттеров** (`test_getters_with_local_storage.py`)
|
||
- Тестирование всех геттеров с локальными данными
|
||
- Выявление проблем в логике парсеров
|
||
|
||
## Ожидаемые результаты
|
||
|
||
Все тесты должны возвращать **статус 200** и содержать поле `"success": true` в ответе.
|
||
|
||
## Примеры тестовых запросов
|
||
|
||
Тесты используют примеры из Pydantic схем:
|
||
|
||
### svodka_pm
|
||
```json
|
||
{
|
||
"id": "SNPZ",
|
||
"codes": [78, 79],
|
||
"columns": ["ПП", "СЭБ"]
|
||
}
|
||
```
|
||
|
||
### svodka_ca
|
||
```json
|
||
{
|
||
"modes": ["fact", "plan"],
|
||
"tables": ["table1", "table2"]
|
||
}
|
||
```
|
||
|
||
### monitoring_fuel
|
||
```json
|
||
{
|
||
"columns": ["total", "normativ"]
|
||
}
|
||
``` |