Airflow-Code testen

Data-Pipelines mit Airflow aufbauen

Volker Janz

Senior Developer Advocate at Astronomer

Drei Testebenen

Dag testing pyramid

  • Integrität: Lädt der Dag ohne Fehler?
  • Unit: Liefert die Geschäftslogik korrekte Ergebnisse?
  • Integration: Läuft der gesamte Dag End-to-End?
Data-Pipelines mit Airflow aufbauen

Integritätstests mit DagBag

from airflow.models import DagBag

dag_bag = DagBag(include_examples=False)
def test_no_import_errors(): assert len(dag_bag.import_errors) == 0
def test_dag_loaded(): assert "daily_etl" in dag_bag.dags
Data-Pipelines mit Airflow aufbauen

Warum Dags beim Import brechen

ModuleNotFoundError

  • ModuleNotFoundError: fehlendes Provider-Paket oder falscher Importpfad
  • NameError: umbenannte Variable/Funktion oder Tippfehler
  • ImportError: zyklische Importe zwischen Dag-Dateien
  • Integritätstests helfen, diese Probleme zu vermeiden
Data-Pipelines mit Airflow aufbauen

Unit-Tests für Task-Funktionen

In der Dag-Datei:

def clean_record(record):
    return {
        "name": record["name"].strip(),
        "email": record["email"].lower(),
    }

@task
def transform(records):
    return [clean_record(r)
            for r in records]
  • Geschäftslogik auslagern

In der Testdatei:

from dags.data_cleaning import (
    clean_record,
)

def test_strips_whitespace():
    result = clean_record(
      {"name": "  Alice  ",
       "email": "[email protected]"}
    )
    assert result["name"] == "Alice"
  • Richte Unit-Tests auf die Geschäftslogik
Data-Pipelines mit Airflow aufbauen

Integrationstests mit dag.test()

import pytest
from airflow.models import DagBag
from pendulum import datetime

dag_bag = DagBag(include_examples=False)

def test_etl_pipeline(): dag = dag_bag.get_dag("etl_output") assert dag is not None dag.test(logical_date=datetime(2026, 1, 15)) output = Path("/tmp/etl_results.json") assert output.exists() results = json.loads(output.read_text()) assert len(results) == 2
  • Führe den echten Dag mit kontrolliertem Input aus und prüfe den Output
Data-Pipelines mit Airflow aufbauen

Testen in CI

CI pipeline

  • Integrität + Unit: bei jedem Commit (schnell)
  • Integration: bei Pull Requests oder nachts (langsamer)
  • Kein Dag geht in Produktion ohne alle drei zu bestehen
Data-Pipelines mit Airflow aufbauen

Lass uns üben!

Data-Pipelines mit Airflow aufbauen

Preparing Video For Download...