4.8 KiB
4.8 KiB
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 # Этот файл
Установка зависимостей
pip install -r tests/requirements.txt
Запуск тестов
Запуск всех тестов
cd tests
python test_all_endpoints.py
Запуск конкретных тестов
# 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
Предварительные условия
- API сервер должен быть запущен на
http://localhost:8000(только для API тестов) - Тестовые данные находятся в папке
test_data/ - Локальный storage используется для прямого тестирования парсеров
Последовательность тестирования
Вариант 1: API тесты (требуют запущенный сервер)
-
Загрузка данных (
test_upload_endpoints.py)- Загрузка
svodka_ca.xlsx - Загрузка
pm_plan.zip - Загрузка
monitoring.zip
- Загрузка
-
Тестирование эндпоинтов (в любом порядке)
test_svodka_pm_endpoints.pytest_svodka_ca_endpoints.pytest_monitoring_fuel_endpoints.py
Вариант 2: Прямые тесты (не требуют сервер)
-
Тестирование парсеров (
test_parsers_direct.py)- Проверка регистрации парсеров
- Проверка локального storage
-
Загрузка в локальный storage (
test_upload_with_local_storage.py)- Загрузка всех файлов в локальный storage
- Проверка сохранения данных
-
Тестирование геттеров (
test_getters_with_local_storage.py)- Тестирование всех геттеров с локальными данными
- Выявление проблем в логике парсеров
Ожидаемые результаты
Все тесты должны возвращать статус 200 и содержать поле "success": true в ответе.
Примеры тестовых запросов
Тесты используют примеры из Pydantic схем:
svodka_pm
{
"id": "SNPZ",
"codes": [78, 79],
"columns": ["ПП", "СЭБ"]
}
svodka_ca
{
"modes": ["fact", "plan"],
"tables": ["table1", "table2"]
}
monitoring_fuel
{
"columns": ["total", "normativ"]
}