ホームページ > バックエンド開発 > Python チュートリアル > Python で別のテスト ディレクトリから単体テストを効率的に実行するにはどうすればよいですか?

Python で別のテスト ディレクトリから単体テストを効率的に実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-27 03:04:13
オリジナル
793 人が閲覧しました

How to Efficiently Run Unit Tests from a Separate Test Directory in Python?

共通テスト ディレクトリ構造で単体テストを実行する方法

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート