web-dev-qa-db-fra.com

Test unitaire Airflow Python?

Je voudrais ajouter quelques tests unitaires pour nos DAG, mais je n’en ai trouvé aucun. Existe-t-il un cadre pour le test unitaire pour les DAG? Il existe un cadre de test de bout en bout qui existe mais je suppose qu'il est mort: https://issues.Apache.org/jira/browse/AIRFLOW-79 . S'il vous plaît suggérer, merci!

18
Chengzhi

Testez vos opérateurs comme ceci:

class TestMyOperator(TestCase):

    def test_execute(self):
        dag = DAG(dag_id='foo', start_date=datetime.now())
        task = MyOperator(dag=dag, task_id='foo')
        ti = TaskInstance(task=task, execution_date=datetime.now())
        result = task.execute(ti.get_template_context())
        self.assertEqual(result, 'foo')

La source

9
Beau Barker

Actuellement, je n'ai rien trouvé de mieux que de simplement utiliser BashOperator:

with DAG('platform-test', start_date=datetime(2017, 8, 29)) as dag:
    test_command = "python3 -m unittest --verbose {}".format(platform_test_fname)
    op = BashOperator(
        task_id="platform-test",
        bash_command=test_command,
    )
1
Ikar Pohorský