我的PyDev(Eclipse Oxygen)项目(在Xubuntu 16.04上使用Python 3.5)包含3个包:
ylang
- 这是我的大多数代码都是项目的核心tkinter_integration
- 提供了在Tkinter中集成ylang
的简便方法tests
- 包含ylang
和tkinter_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'