我有一个应用程序,我想用unittest
来测试,但我遇到了一些问题。 我的目录结构如下:如何从python中的测试模块中导入src
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
我不能导入cmds
打包在我的src
dir中。
我该如何做这项工作?
基本上我想分别测试root_dir
与src
和tests
目录中的应用程序。
我试图追加src
到sys.path
,但是当我输入cmds.baz
从tests/cmds.py
我仍然可以从单元测试的AttributeError: 'module' object has no attribute 'cmds'
。
编辑: 我的导入和sys.path
的说法是:
import sys
sys.path.append('../src')
from cmds.baz import about
而且回溯:
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'
src不是包,而是测试。这是为什么?你是否正确设置了python路径? – pvoosten 2012-04-23 19:40:43
显示确切的导入和完整的回溯。 – agf 2012-04-23 19:40:50
@lbp因为我在执行'python2.7 -m unittest tests.cmds'时必须导入它。 – Paul 2012-04-24 11:56:16