Pythonのunittestでテストを書く際、親ディレクトリからモジュールをインポートする必要がある場合があります。この記事では、その方法について説明します。
ディレクトリ構造
以下のようなディレクトリ構造を考えてみましょう。
/projectPackage
/projectPackage/package
/projectPackage/package/__init__.py
/projectPackage/package/someModule.py
/projectPackage/package/testing.py
/projectPackage/package/tests
/projectPackage/package/tests/__init__.py
/projectPackage/package/tests/someModuleTests.py
ここで、someModuleTests.py
から親ディレクトリのsomeModule.py
をインポートしたいとします。
解決策
方法1: PYTHONPATHを使用する
テストを親ディレクトリから実行すると、そのディレクトリがPYTHONPATH(現在の作業ディレクトリ)に含まれます。これは、親ディレクトリからテストファイルを実行するか、nosetestのようなツールを使用してパッケージ内のすべてのテストを再帰的に検索することで実現できます。
方法2: unittestのコマンドラインインターフェースを使用する
unittestのコマンドラインインターフェースを使用すると、ディレクトリをsys.pathに追加する必要がありません。以下のように実行できます。
$ cd new_project
$ python -m unittest test_antigravity
これらの方法を使用すると、Pythonのunittestで親ディレクトリからモジュールを簡単にインポートできます。適切な方法を選択して、テストの効率と可読性を向上させましょう。