共通テスト ディレクトリ構造で単体テストを実行する方法
Python では、単体テストを別のテスト ディレクトリに編成するのが一般的です。ただし、これらのテストをどのように効率的に実行するかという問題が生じます。
問題
テスト ディレクトリ内から python test_antigravity.py を実行しようとすると、反重力モジュールは、モジュールがパス上にないために失敗します。 PYTHONPATH を変更したり、他の検索パスのトリックを使用したりすることは可能かもしれませんが、特に単純にテスト結果を確認したいユーザーにとっては、単純さに欠けます。
解決策
推奨されるアプローチは、unittest コマンド ライン インターフェイスを利用することです。その TestLoader クラスは、必要なディレクトリを sys.path に追加し、パスの問題を解決します。
たとえば、次のようなディレクトリ構造では、
new_project ├── antigravity.py └── test_antigravity.py
次のコマンドを使用してテストを実行できます。
$ cd new_project $ python -m unittest test_antigravity
提供されているようなディレクトリ構造の場合:
new_project ├── antigravity │ ├── __init__.py │ └── antigravity.py └── test ├── __init__.py └── test_antigravity.py
次のことができます。 antigravity と test の両方を __init__.py ファイルのパッケージとして宣言することで、同様の機能を実現します。テスト モジュールでは、通常どおり、antigravity パッケージとそのモジュールをインポートできます。
特定のテストの実行
test_antigravity.py などの単一のテスト モジュールを実行するには:
$ cd new_project $ python -m unittest test.test_antigravity
個別のテスト ケースを実行することもできます。メソッド:
$ python -m unittest test.test_antigravity.GravityTestCase $ python -m unittest test.test_antigravity.GravityTestCase.test_method
すべてのテストの実行
テスト検出を使用して、すべてのテストを自動的に実行できます。これには、テスト モジュールとパッケージの名前を test*.py (-p または --pattern フラグでカスタマイズ可能) にする必要があります。
$ cd new_project $ python -m unittest discover
シンプルさを好むユーザーの場合は、次のコマンドを実行するように指示できます。コマンド:
To run the unit tests, do: $ python -m unittest discover
以上がPython で別のテスト ディレクトリから単体テストを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。