我有一個應用程序,我想用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