繁体   English   中英

Python unittest 无法解析导入语句

[英]Python unittest failing to resolve import statements

我的文件结构如下所示

project
    src
        __init__.py
        main.py
        module.py
        secondary.py
    test
        test_module.py        

模块.py

import secondary
x = False

二级.py

pass

测试模块.py

from unittest import TestCase

from src import module

 class ModuleTest(TestCase):
    def test_module(self):
        self.assertTrue(module.x)

/project/中调用python3 -m unittest discover会出现错误:

 File "/Users/Me/Code/project/test/test_module.py", line 6, in <module>
  from src import module
 File "/Users/Me/Code/project/src/module.py", line 1, in <module>
  import secondary
ImportError: No module named 'secondary'

我该怎么做才能正确导入secondary.py

在Python 3(以及带有from __future__ import absolute_import Python 2)中,您必须明确从同一个包导入另一个模块时所需的模块。 您在module.pyimport secondary )中使用的语法仅在secondary是Python模块搜索路径中的文件夹中的顶级模块时才有效。

要从您自己的包显式请求相对导入,请使用from . import secondary from . import secondary而不是。 或者,使用包的名称以及模块进行绝对导入( from src import secondary ,或者import src.secondary并在模块的其他位置使用src.secondary而不是仅使用secondary )。

尝试将此添加到测试文件的顶部

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

注意:根据项目结构,我们必须指定根文件夹

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM