Тестирование Airflow (Testing Airflow)
Тестирование DAG и задач снижает количество ошибок при деплое. Рекомендуемые практики:
- Парсинг DAG — при импорте не должно быть исключений; можно написать тест, который загружает все DAG из папки (DagBag) и проверяет отсутствие import errors. Так же проверяют наличие ожидаемых DAG и задач.
- Тесты задач — вызывать
python_callableили логику оператора с тестовыми данными и контекстом (mock или фикстуры). Проверять возвращаемые значения, XCom, побочные эффекты (например, вызовы API через mock). Для TaskFlow-задач тестировать обычные Python-функции без декоратора. - Тесты зависимостей — проверить, что граф задач соответствует ожидаемому (списки upstream/downstream).
- pytest — использовать фикстуры для временного окружения Airflow, БД, переменных. Модули
airflow.models,airflow.utilsи тестовые утилиты (например,airflow.utils.context.Context) помогают собирать контекст для задач. - CI — в пайплайне перед деплоем запускать тесты и проверку парсинга DAG (например,
airflow dags list, загрузка DagBag в тесте).
Избегайте тяжёлой логики при импорте DAG (сеть, БД) — выносите её в задачи или в тестовые моки. Документация: Testing Airflow, Airflow testing.