Pythonのunittestでテストを書く際、親ディレクトリからモジュールをインポートする必要がある場合があります。この記事ではその方法について説明します。
ディレクトリ構造
以下のようなディレクトリ構造を考えます。
/projectPackage
/package
__init__.py
someModule.py
testing.py
/tests
__init__.py
someModuleTests.py
ここで、someModuleTests.py
から親ディレクトリのsomeModule.py
をインポートしたいとします。
方法
方法1: PYTHONPATHを利用する
テストを親ディレクトリから実行することで、そのディレクトリがPYTHONPATH(現在の作業ディレクトリ)に含まれます。これは、親ディレクトリからテストファイルを実行するか、nosetestのようなツールを使用してパッケージ内のすべてのテストを再帰的に検索することで実現できます。
方法2: unittestのdiscoverを利用する
unittestのdiscoverコマンドを使用すると、ディレクトリ内のテストをまとめて実行することができます。デフォルトでは、指定したディレクトリ内のtest*.py
ファイルをすべて実行しますが、オプションで変更することもできます。
注意点
相対インポートを使用しないでください。これは問題を引き起こす可能性があります。また、PYTHONPATHやsys.pathをハックして修正しようとしないでください。
以上、Python unittestで親ディレクトリからのインポートを行う方法についてでした。この情報が役立つことを願っています。