Pythonのunittestフレームワークを使用するとき、テスト対象のモジュールをどのようにインポートするかは一般的な問題です。以下に、その解決策をいくつか紹介します。
テストディレクトリに__init__.py
を追加する
テストディレクトリに__init__.py
ファイルを追加することで、Pythonはそのディレクトリをパッケージとして認識します。これにより、テストディレクトリ内のファイルから、他のディレクトリにあるモジュールをインポートできます。
例えば、次のようなディレクトリ構造があるとします。
projectroot
┣classes
┃ ┣__init__.py
┃ ┗hoge.py
┗tests
┣__init__.py
┗test_hoge.py
この場合、test_hoge.py
からhoge.py
をインポートするには、次のように書くことができます。
from classes import hoge
テストを実行する際のコマンド
テストを実行する際には、python -m unittest
コマンドを使用します。このコマンドは、モジュール名を引数として受け取ります。したがって、テストファイルを指定する際には、ファイルのパスではなく、モジュール名を使用する必要があります。
例えば、上記のディレクトリ構造でtest_hoge.py
を実行するには、次のようにコマンドを実行します。
python -m unittest tests.test_hoge
また、特定のテストケースだけを実行することも可能です。例えば、TestHogeClass
クラスのhoge_method_test
メソッドだけを実行するには、次のようにします。
python -m unittest tests.test_hoge.TestHogeClass.hoge_method_test
これらの方法を使用すれば、Pythonのunittestフレームワークでテストを書き、実行する際のモジュールインポートの問題を解決できます。テストはコードの品質を保証し、リファクタリングを容易にするため、適切な方法でモジュールをインポートできることは重要です。