Files
python_parser/tests/README.md

4.8 KiB
Raw Blame History

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

Предварительные условия

  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

{
  "id": "SNPZ",
  "codes": [78, 79],
  "columns": ["ПП", "СЭБ"]
}

svodka_ca

{
  "modes": ["fact", "plan"],
  "tables": ["table1", "table2"]
}

monitoring_fuel

{
  "columns": ["total", "normativ"]
}