我有一个应用程序,想要使用 unittest
进行测试,但是遇到了一些问题。我的目录结构如下:
root_dir
├── src
│ ├── cmds
│ │ ├── baz.py
│ │ ├── __init__.py
│ │ └── bar.py
│ └── foo.py
└── tests
├── cmds.py
└── __init__.py
我想测试来自
cmds
的baz
和bar
模块,我正在尝试执行以下操作:
root_dir> python2.7 -m unittest tests.cmds
但是在tests.cmds
中,我无法在我的src
目录中导入cmds
包。如何使其工作?
基本上,我想使用
src
和tests
目录分别测试来自root_dir
的应用程序。我尝试将
src
附加到sys.path
,但是当我从tests/cmds.py
导入cmds.baz
时,仍然会从unittest获得一个AttributeError: 'module' object has no attribute 'cmds'
。编辑: 我的导入和
sys.path
语句是:import sys
sys.path.append('../src')
from cmds.baz import about
并且有一个回溯(traceback):
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/unittest/__main__.py", line 12, in <module>
main(module=None)
File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs
self.createTests()
File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests
self.module)
File "/usr/lib/python2.7/unittest/loader.py", line 128, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName
parent, obj = obj, getattr(obj, part)
AttributeError: 'module' object has no attribute 'cmds'
python2.7 -m unittest tests.cmds
时必须导入它。 - Paulcmds.py
,而模块目录名为cmds
上 - 没有属性的“module”可能是cmds.py
- 尝试使用import src.cmds.baz
看看是否仍然会出现错误? - BergmannF