在Python中从上级目录导入模块

问题描述 投票:0回答:1

我正在开发一个Python项目,我有一个名为

Api
结构的文件夹,其中包含各种模块和一个专门用于测试的文件夹。我想将项目文件夹的
api
中的 Python 文件包含到位于测试文件夹中的测试文件中。我怎样才能实现这个目标?

my_project/
    ├── api/
    |     ├── core/
    │     |     ├── file1.py
    │     |     ├── file2.py
    |     |     ...
    │     ├── module3.py
    │     └── ...
    ├── tests/
    │     ├── test_my_module.py
    │     ├── ...
    └── ...

项目图片: Directory images

我的代码片段是这样的,但它给了我一个错误:

import unittest
from api.core import ContentGenerator





class TestMagicBox(unittest.TestCase):
    content_generator = ContentGenerator()

    def test_caption(self):
        result = TestMagicBox.content_generator.generate_description(
            "pizza", "peperoni pizza"
        )
        self.assertIsNotNone(result)


if __name__ == "__main__":
    unittest.main()

我的测试文件位于 api 文件夹之外的单独目录中,特别是在测试目录中。在测试文件夹中,我想包含并测试 api 项目核心子文件夹中的 magic_box.py 模块。 (

api/core/magic_box.py
)

在确保干净且可维护的测试实践的同时,在 Python 中实现这一目标的推荐方法是什么?

我们将非常感谢您的见解和指导。

python unit-testing testing import python-import
1个回答
0
投票

在 Python 中,模块路径是相对于运行 Python 解释器的目录而言的,因此要运行

tests
包中的模块并访问
api
包中的模块,您需要从其父目录运行 Python,
 HERMES
,例如:

HERMES> python tests/test_content_generator.py
© www.soinside.com 2019 - 2024. All rights reserved.