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 secondaryimport src.secondary 并在模块的其他位置使用 src.secondary 而不仅仅是 secondary)进行绝对导入。

【讨论】:

以上是关于Python unittest 无法解析导入语句的主要内容,如果未能解决你的问题,请参考以下文章

python自动化unittest中yaml用法实例说明

带assert语句的Python unittests(带异常)

接口自动化测试 unittest+request+excel(踩‘坑’)

selenium + python自动化测试unittest框架学习python导入模块及包知识点

python+requests随笔:unittest框架

《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析