Эндпоинты не работают
This commit is contained in:
123
tests/README.md
Normal file
123
tests/README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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"]
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user