[英]Python unittest failing to resolve import statements
我的文件结构如下所示
project
src
__init__.py
main.py
module.py
secondary.py
test
test_module.py
import secondary
x = False
pass
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.py
( import 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.