# 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"] } ```