lab8_etl
Описание
Лабораторная работа 8: Тестирование ETL пайплайна
Языки
- Python98,4%
- Java1,6%
lab8_etl
Лабораторная работа 8: Тестирование ETL пайплайна
Как запустить проект
Предварительные требования
- Python 3.8 или новее (рекомендуется Python 3.9)
- Установленный pip (менеджер пакетов Python)
Шаги для запуска:
-
Клонируйте репозиторий
-
Установите зависимости
-
Запустите ETL пайплайн
-
Запустите все тесты
-
Или запустите тесты по отдельности
Какие тесты написаны
1. Базовые тесты ETL (tests/test_etl.py)
- проверяет корректность извлечения данных из CSVtest_extract()- тестирует преобразования данных (добавление полей, категорий зарплат)test_transform()- проверяет загрузку данных в SQLite базуtest_load()- базовые проверки качества данных (отсутствие пустых значений, валидные диапазоны)test_data_quality()
2. Тесты качества данных (test_data_quality.py)
- Проверка структуры данных (наличие всех колонок)
- Уникальность идентификаторов
- Отсутствие NULL значений в ключевых полях
- Валидность диапазонов значений (возраст, зарплата)
- Корректность категориальных данных (департаменты)
3. Тесты производительности (test_performance.py)
- измерение времени выполнения ETL процессаtest_performance()- контроль использования памятиtest_memory_usage()
С какими проблемами столкнулись
Проблема 1: Несовместимость версий библиотек
Ошибка:
Причина: Конфликт версий между NumPy и Pandas из-за несовместимых бинарных интерфейсов.
Проблема 2: Импорт модулей в тестах
Ошибка: Модули не находились при запуске тестов через pytest
Причина: Неправильная структура проекта или пути импорта.
Проблема 3: Зависимости Great Expectations
Ошибка: Сложности с установкой всех зависимостей Great Expectations
Причина: Библиотека имеет много зависимостей, которые могут конфликтовать.
Как решили проблемы
Решение проблемы 1: Фиксация версий зависимостей
Заменили на конкретные совместимые версии:
Решение проблемы 2: Корректная структура проекта
- Создали пакет
с файломtests__init__.py - Использовали относительные импорты где необходимо
- Проверили структуру проекта согласно рекомендациям
Решение проблемы 3: Использование виртуального окружения
Рекомендовали создавать чистое виртуальное окружение:
Дополнительные решения:
- Обновили pip перед установкой: pip install --upgrade pip
- Использовали
для очистки кеша при проблемах с установкойpip cache purge - Поэтапная установка библиотек для выявления конфликтующих зависимостей
В результате всех исправлений проект успешно запускается и все тесты проходят.