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
ディレクトリで別々にテストしたいと考えています。
私はsys.path
へsrc
を追加しようとしたが、私は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 (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
正確なインポートと完全なトレースバックを表示します。 – agf
@lbp 'python2.7 -m unittest tests.cmds'を実行するときにインポートする必要があるためです。 – Paul