- Зачем: - адаптация пайплайна для работы с чистым PostgreSQL вместо Greenplum - обеспечение совместимости с учебным стендом на базе Docker Compose - Что: - переименованы файлы (greenplum -> postgres) - обновлены DAG-файлы: замена get_gp_conn на get_postgres_conn, адаптация DDL под PostgreSQL - обновлён helpers/postgres.py: замена функций и переменных окружения - добавлен pytest в requirements.txt для запуска тестов - создан tests/conftest.py с функцией patch_postgres_hook - обновлён tests/test_postgres_helpers.py: исправлены импорты - добавлено монтирование папки tests в docker-compose.yml - адаптирован sql/base/orders_ddl.sql под PostgreSQL - Проверка: - docker-compose exec airflow-webserver pytest /opt/airflow/tests/test_postgres_helpers.py
21 lines
658 B
Python
21 lines
658 B
Python
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
|
|
def patch_postgres_hook(monkeypatch, fake_hook_class) -> None:
|
|
"""
|
|
Патчит PostgresHook для тестирования.
|
|
|
|
Args:
|
|
monkeypatch: pytest monkeypatch fixture
|
|
fake_hook_class: Класс-имитация PostgresHook
|
|
"""
|
|
# Патчим PostgresHook на уровне airflow.providers.postgres.hooks.postgres
|
|
# Это нужно, так как get_postgres_conn() импортирует его оттуда
|
|
monkeypatch.setattr(
|
|
"airflow.providers.postgres.hooks.postgres.PostgresHook",
|
|
fake_hook_class,
|
|
raising=False,
|
|
)
|