首页/数据/数据工程与 ETL 速查/Airflow DAG 测试与 CI 校验

Airflow DAG 测试与 CI 校验

把 DAG 当代码测:CI 里用 DagBag 校验所有 DAG 可导入、dag_id 唯一、无循环依赖,再用 pytest 断言关键任务与依赖结构,解析失败的 DAG 不允许合并。

冒烟测试DagBag 解析 dags 目录并收集 import_errors
结构断言断言任务存在、依赖正确
隔离CI 用独立元数据库或 mock
卡点解析失败的 DAG 禁止合并

DagBag 冒烟测试

DagBag 冒烟测试
import pytest
from airflow.models import DagBag

@pytest.fixture()
def dagbag():
    return DagBag(dag_folder="dags", include_examples=False)

def test_no_import_errors(dagbag):
    assert not dagbag.import_errors

def test_daily_orders_has_load(dagbag):
    dag = dagbag.get_dag("daily_orders")
    assert dag is not None and "load" in dag.task_ids
CI 里跑 DagBag 能拦住语法错误、循环依赖与重复 dag_id,是成本较低的防线。

易错点

  • 测试环境连生产元数据库跑 DagBag,会写入数据污染元数据库
  • 只测能导入不测关键依赖结构,缺任务仍会上线

数据来源与参考

  • Apache Airflow 官方文档:DAG Testing(DagBag)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌