Python unittest 无法解析导入语句
Posted
技术标签:
【中文标题】Python unittest 无法解析导入语句【英文标题】:Python unittest failing to resolve import statements 【发布时间】:2016-05-01 10:13:18 【问题描述】:我的文件结构如下所示
project
src
__init__.py
main.py
module.py
secondary.py
test
test_module.py
模块.py
>import secondary
x = False
secondary.py
>pass
test_module.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
?
【问题讨论】:
相关:***.com/questions/1896918/… 你可以通过import .secondary
指定它在同一个目录中
【参考方案1】:
在 Python 3(和带有 from __future__ import absolute_import
的 Python 2)中,当从同一个包中导入另一个模块时,您必须明确说明您想要什么模块。您在 module.py
(import secondary
) 中使用的语法仅在 secondary
是 Python 模块搜索路径中文件夹中的***模块时才有效。
要从您自己的包中明确请求相对导入,请改用from . import secondary
。或者,使用包名和模块名(from src import secondary
或 import src.secondary
并在模块的其他位置使用 src.secondary
而不仅仅是 secondary
)进行绝对导入。
【讨论】:
以上是关于Python unittest 无法解析导入语句的主要内容,如果未能解决你的问题,请参考以下文章
带assert语句的Python unittests(带异常)
接口自动化测试 unittest+request+excel(踩‘坑’)