Python 与气流的集成测试

Python 与气流的集成测试,python,google-bigquery,pytest,airflow,Python,Google Bigquery,Pytest,Airflow,对BigQuery运行气流集成测试的好方法/推荐方法是什么 气流似乎有相当多的操作员是为测试而设计的,例如BigQueryCheckOperator。我正在努力寻找任何最佳实践或示例来展示如何将其用于集成测试 对于以下各项,建议采用什么方式进行集成测试: 具体任务 整个DAG 理想情况下,使用Python编写的测试框架,因为Airflow也是用Python编写的,例如pytest或类似工具。您可以像这样在整个dag上运行测试: import unittest from airflow.mod

对BigQuery运行气流集成测试的好方法/推荐方法是什么

气流似乎有相当多的操作员是为测试而设计的,例如
BigQueryCheckOperator
。我正在努力寻找任何最佳实践或示例来展示如何将其用于集成测试

对于以下各项,建议采用什么方式进行集成测试:

  • 具体任务
  • 整个DAG

理想情况下,使用Python编写的测试框架,因为Airflow也是用Python编写的,例如
pytest
或类似工具。

您可以像这样在整个dag上运行测试:

import unittest
from airflow.models import DagBag

class TestDagIntegrity(unittest.TestCase):

LOAD_SECOND_THRESHOLD = 2

def setUp(self):
    self.dagbag = DagBag()

def test_import_dags(self):
    """ Test if dags works, no fail in import
    """
    self.assertFalse(
        len(self.dagbag.import_errors),
        'DAG import failures. Errors: {}'.format(
            self.dagbag.import_errors
        )
    )

suite = unittest.TestLoader().loadTestsFromTestCase(TestDagIntegrity)
unittest.TextTestRunner(verbosity=2).run(suite)

如果您的DAG工作正常,如果没有导入失败或缺少变量,将进行测试

您可以查看dsunit()中的各种验证选项,免责声明:我一直在为endly,dsunit@Datageek你想出了什么解决办法?我目前正在通过从测试用例调用airflow CLI test cmd()来测试我的DAG和任务。可能是一种非常缓慢的方法,但它是有效的。我链接了一种有趣的方法,但是在我看来,由于使用了模拟,这种方法更像是单元而不是集成方法,但仍然可能有用:@andilabs我们最终为每个生产DAG实现了一个测试DAG。它将DAG本身作为子DAG(在测试数据上)运行,然后运行测试任务,比较实际数据集和预期数据集之间的结果。那么,有没有办法模拟配置(运行_DAG.conf、hook.get_连接和变量)并使用实际数据运行DAG,而不仅仅是导入数据?