Py3如何导入?

2024-10-05 10:14:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下用于气流设置的文件夹结构。我想对DAG进行单元测试,但是我无法理解如何运行单元测试,因为导入是在现有的taski实现中完成的

.
+-- dags
|   +-- task1
|         +-- dag.py
|         +-- helper1.py
|         +-- helper2.py
|   +-- task2
|         +-- *.py
+-- tests
    +-- task1
          +-- test_*.py

以下是导入结构:

#dag.py 

from task1 import helper
#helper.py

from task1 import helper2
#test_validation.py

import unittest
from airflow.models import DagBag

class TestDag1(unittest.TestCase):

    def setUp(self):
        self.dagbag = DagBag(dag_folder="dags/")

我通过调用类似于python3 -m unittest discover -s tests的函数来运行测试,这会导致导入错误,因为它将dags/文件夹视为主模块,但是由于当前的设置在airflow上运行,我不确定如何更改导入,以便一切都保持正常

我的问题是,我做错了什么?在dags实现中导入,或者不调整unittest设置以相应地导入。我如何解决这个问题

Python 3.8 气流1.10.9


Tags: frompytestimporthelper文件夹tests单元测试
2条回答

您可以在运行时将路径显式添加到所需文件。例如,如果foo.py需要从/some/path/some_file.py导入某些内容:

# foo.py

import sys
sys.path.insert(0, '/some/path/')
from some_file import some_function
from task1 import helper2.py

应该是:

from task1 import helper2

相关问题 更多 >

    热门问题