既存プロジェクトでImportErrorでテストが通らなかったのでメモ
プロジェクト構成が以下のような場合
※submoduleは"git submodule"で追加したモジュール想定
root/
├ module/
│ └ submodule/
│ └ to_import_module
└ tests/
└ test1.py
test1.pyにてto_import_moduleをインポートしようとして
import module.submoule.to_import_module
としても
ImportError: No module named to_import_module
と突き返されてしまいます。かといってこのためにパス指定やら
プロジェクト設定やらを変更するのも億劫です。
なのでここはsysとosモジュールを使って
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/../module/submodule')
import to_import_module
と探査パス範囲を拡張してやることによりインポートが可能になります。
他環境でも動くように相対パス指定がいいですね。
ただこの方法だと"pep8 E402"に怒られますが、
テスト実行はコード規則より重い
ので勘弁してくださいオナシャス。
もちろん本命コードに用いるのはNG