Airflow kodunu test et

Airflow ile Veri İş Hatları Oluşturma

Volker Janz

Senior Developer Advocate at Astronomer

Üç test düzeyi

Dag testing pyramid

  • Bütünlük: Dag hatasız yükleniyor mu?
  • Birim: İş mantığı doğru sonuç üretiyor mu?
  • Entegrasyon: Tüm Dag uçtan uca çalışıyor mu?
Airflow ile Veri İş Hatları Oluşturma

DagBag ile bütünlük testleri

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
Airflow ile Veri İş Hatları Oluşturma

DAG'ler neden import'ta bozulur

ModuleNotFoundError

  • ModuleNotFoundError: eksik provider paketi veya yanlış import yolu
  • NameError: yeniden adlandırılmış değişken/fonksiyon ya da yazım hatası
  • ImportError: Dag dosyaları arasında döngüsel import
  • Bütünlük testleri bu sorunları önlemeye yardım eder
Airflow ile Veri İş Hatları Oluşturma

Görev fonksiyonlarında birim testleri

Dag dosyasında:

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]
  • İş mantığını ayıkla

Test dosyasında:

from dags.data_cleaning import (
    clean_record,
)

def test_strips_whitespace():
    result = clean_record(
      {"name": "  Alice  ",
       "email": "[email protected]"}
    )
    assert result["name"] == "Alice"
  • Birim testlerini iş mantığına odakla
Airflow ile Veri İş Hatları Oluşturma

dag.test() ile entegrasyon testleri

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
  • Gerçek Dag'i kontrollü girdilerle çalıştır ve çıktıyı doğrula
Airflow ile Veri İş Hatları Oluşturma

CI'da test

CI pipeline

  • Bütünlük + birim: her commit'te (hızlı)
  • Entegrasyon: pull request'lerde veya geceleyin (daha yavaş)
  • Üçünü de geçmeyen hiçbir Dag prod'a gitmez
Airflow ile Veri İş Hatları Oluşturma

Hadi pratik yapalım!

Airflow ile Veri İş Hatları Oluşturma

Preparing Video For Download...