PyDev - unittest因ImportError而失败

时间:2017-08-13 12:06:15

标签: python eclipse unit-testing pydev python-import

我的PyDev(Eclipse Oxygen)项目(在Xubuntu 16.04上使用Python 3.5)包含3个包:

  • ylang - 这是我的大多数代码都是项目的核心
  • tkinter_integration - 提供了在Tkinter中集成ylang的简便方法
  • tests - 包含ylangtkinter_integration
  • 的单元测试

文件夹结构

YLanguage---+
            |
            +--ylang--+
            |         |
            |         +--ylang.py (contains YParser with its load_file() member function)
            |
            |
            +--tkinter_integration--+
            |                       |
            |                       +-- ...
            |
            +--tests--+
                      |
                      +--load_file.py (contains TestLoadFile with its testLoadInvalid() member function)
                      |
                      +-- ...

我使用PyDev单元测试向导添加了一个单元测试(对于单元测试模块,您可以在模块:单元测试模块:Unittest with setUp和tearDown 之间选择; I选择了第一个)。

测试模块如下所示:

import unittest

class TestLoadFile(unittest.TestCase):

    def testLoadInvalid(self):
        from ylang import YParser

        yp = YParser()
        self.assertRaises(ValueError, yp.load_file(None))


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'TestLoadFile.testLoadInvalid']
    unittest.main()

当我运行测试时,我得到了

  

错误:testLoadInvalid(tests.load_file.TestLoadFile)

           

"/home/user/workspace/YLanguage/tests/load_file.py",第12行,in   testLoadInvalid

`from ylang import YParser` ImportError: cannot import name 'YParser'Traceback (most recent call last):   File

我已确保各个子目录是 PyDev - PYTHONPATH 属性(源文件夹)中项目的PYTHONPATH的一部分:

  • /${PROJECT_DIR_NAME}
  • /${PROJECT_DIR_NAME}/ylang
  • /${PROJECT_DIR_NAME}/tkinter_integration
  • /${PROJECT_DIR_NAME}/tests

所有包都是使用PyDev向导创建的,并且包含__init__.py个文件,因此它们应该被视为实际的包。

以下是评论中要求的sys.path的输出:

  

[' /home/user/.p2/pool/plugins/org.python.pydev_5.9.0.201708101613/pysrc' ;,   的' /家庭/用户/工作区/ YLanguage' 下,   的' /家庭/用户/工作区/ YLanguage /依兰' 下,   的' /家庭/用户/工作区/ YLanguage / tkinter_integration' 下,   ' / home / user / workspace / YLanguage / tests' ,' /usr/lib/python3.5',   ' /usr/lib/python3.5/plat-i386-linux-gnu' ;,   ' /usr/lib/python3.5/lib-dynload' ;,   ' /usr/local/lib/python3.5/dist-packages' ;,   ' / usr / lib / python3 / dist-packages',' /usr/lib/python35.zip',   的' /家庭/用户/工作区/ YLanguage'

0 个答案:

没有答案