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で親ディレクトリからのインポートを行う方法についてでした。この情報が役立つことを願っています。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です