PyCharm 2025.1 ヘルプ

Pytest

PyCharm は、完全な機能テストフレームワーク pytest (英語) をサポートしています。

次の機能が利用できます。

  • 専用テストランナー。

  • テスト対象と pytest フィクスチャのコード補完。

  • コードナビゲーション。

  • 詳細な失敗アサートレポート。

  • Python 2.7 および Python 3.5 以降をサポートします。

  • マルチプロセッシングテストの実行。

デフォルトでは、推奨されるデフォルトのテストランナーは unittest(英語) です。pytest を利用するには、最初にそれをデフォルトのテストランナーにする必要があります。

Pytest をインストールする

  1. Python パッケージツールウィンドウに移動します

  2. Python パッケージツールウィンドウの検索フィールドに pytest の入力を開始します。利用可能なパッケージのリストでパッケージを見つけて、インストールをクリックします。

    Installing Pytest

pytest パッケージがインストールされると、PyCharm はそれを検出し、デフォルトのプロジェクトテストランナーにします。プロジェクト設定でいつでもテストランナーを変更できます。

これで、pytest がデフォルトのテストフレームワークとして設定されたため、 Car クラスの小さなテストを作成できます。brake 関数をチェックするための pytest テストを作成しましょう。

テストを作成する

  1. Python プロジェクトを作成します。

  2. メインメニューで、ファイル | 新規に移動し、Python ファイルを選択し、car.py と入力して、OK をクリックします。

  3. Car クラスをコピーし、car.py ファイルに貼り付けます。

  4. エディターで、brake メソッド宣言にキャレットを置きます。

  5. 以下のいずれか 1 つを実行します:

    • 移動 | テストに移動します。

    • コンテキストメニューから移動 | テストを選択します。

      Go to test
    • Ctrl+Shift+T を押します。

    PyCharm は、利用可能なテストのリストを示しています。

    New test for pytest
  6. 新規テストの作成をクリックします。

    テストの作成ダイアログが開きます。

    Create a python test for the brake method

    テストの作成ダイアログで、以下の設定を指定します。

    • 新しいテストクラスが生成されるターゲットディレクトリ。

    • テストファイルの名前(この例では test_car.py)、および必要に応じてテストクラスの名前。

    • テストクラスに含めるメソッドの横にあるチェックボックスを選択します。

      キャレットをメソッド内に配置すると、このメソッド名のみがリストに含まれることに注意してください。また、命名規則に注意してください。テストメソッドには test 接頭辞が付いています。テストの実行アイコンは、そのような接頭辞を持つすべてのメソッドのエディターガターに表示されます。

  7. 準備ができたら OK をクリックします。PyCharm は、指定された場所にテストファイルを生成します。

  8. PyCharm は、テストメソッドテンプレートを使用してテストファイルを自動的に生成します。テンプレートコードを Car の初期速度値を 50 に設定し、brake() 関数の実行後に速度が正しく 45 に設定されるかどうかを確認するコードに置き換えます。

    from car import Car def test_car_brake(): car = Car(50) car.brake() assert car.speed == 45

PyCharm はテスト対象を認識し、Car クラスのインスタンスの補完を提供することに注意してください。

Autocompletion for the test subject

コンテキストメニューのテスト対象に移動およびテストへジャンプコマンドは pytest ではサポートされていませんが、宣言に移動 Ctrl+B コマンドを使用して、car.py のテスト済みコードに移動できます。

テストを実行する

  1. テストを実行するには、Run Test をクリックします。

    Run the test
  2. PyCharm は自動的に pytest 実行 / デバッグ構成を作成することに注意してください。

    Suggested run/debug configuration for pytest

    テストを実行するには、test_car_pytest に対して pytest を実行するを選択します。

  3. テスト結果をインスペクションする:

    Pytest run
  4. assert ステートメントを次のように変更します。assert my_car.speed == 4599

  5. アサートに失敗したレポートを評価するためにテストを再実行します。

    Assert failing report

    pytest は、失敗の明示的なレポートを提供します。

pytest フィクスチャを使用すると、テストモジュール全体で再利用できる小さなテストユニットを作成できます。必要なのは、再利用可能なユニットに @pytest.fixture のマークを付けることだけです。

フィクスチャを使う

  1. pytest テストを次のように変更します。

    import pytest from car import Car @pytest.fixture def my_car(): return Car(50) def test_car_accelerate(my_car): my_car.accelerate() assert my_car.speed == 55 def test_car_brake(my_car): my_car.brake() assert my_car.speed == 45

    my_car() は、speed 値が 50 の Car インスタンスを作成するフィクスチャ関数です。test_car_accelerate および test_car_brake で、Car クラスの対応する関数が正しく実行されたことを確認するために使用されます。

    my_car フィクスチャは tempdir のような他の標準的な pytest フィクスチャと一緒にコード補完リストに追加されることに注意してください。

  2. いずれかの Run Test アイコンをクリックするか、テストモジュール全体を実行します。

フィクスチャ関数の scope パラメーターを使用して、テスト間でのフィクスチャインスタンスの共有を有効にすることができます。pytest フィクスチャの詳細については、pytest フィクスチャのドキュメント(英語)を参照してください。

事前定義されたデータセットに対してテストを実行することをお勧めします。PyCharm は、@pytest.mark.parametrize を介して pytest に実装されたテストパラメーター化をサポートします。

パラメーターの適用

  1. car.accelerate および car.brake 機能をテストするための速度値のセットを作成しましょう: speed_data = {45, 50, 55, 100}

  2. テストコードを次のように変更します。

    import pytest from car import Car speed_data = {45, 50, 55, 100} @pytest.mark.parametrize("speed_brake", speed_data) def test_car_brake(speed_brake): car = Car(50) car.brake() assert car.speed == speed_brake @pytest.mark.parametrize("speed_accelerate", speed_data) def test_car_accelerate(speed_accelerate): car = Car(50) car.accelerate() assert car.speed == speed_accelerate

    PyCharm は新しく作成されたパラメーターを検出し、補完リストに追加することに注意してください。

     Code completion for pytest.mark.parametrize
  3. car.brake() 関数のテストを実行します。次のテストレポートが必要です。

    Three tests failed and one test passed for the car.brake function

car.accelerate() 関数のテストを実行して、55 以外のすべての速度値で失敗することを確認することもできます。パラメーター化されたテストの詳細については、pytest のドキュメント(英語)を参照してください。

関連ページ:

テストの実行

通常、PyCharm は、作成した実行 / デバッグ構成を実行することにより、他のアプリケーションと同じ方法でテストを実行およびデバッグします。その際、指定されたテストクラスまたはメソッドをテストランナーに渡します。多くの場合、コンテキストメニューからテストセッションを開始できます。この目的のために、実行およびデバッグコマンドは、特定のコンテキストメニューで提供されます。例: これらのコマンドは、プロジェクトツールウィンドウのテストクラス、ディレクトリ、パッケージで使用できます。エディターで現在...

テストフレームワーク

PyCharm では、次のテストフレームワークを使用できます。Python ユニットテストはいはいはいはいはい部分的に Pytest はいはいはいはいはいはい Python nosetests 部分的にはいはいはいはい部分的に tox いいえはいいいえいいえはい部分的に TwistedTrial はいはいはいはいはいなし Python doctests なしはいいいえなしはいはい PyCharm プロのみ利用可能 BDD テストフレームワーク

最初のプロジェクトを作成して実行する

始める前に:次の前提条件が満たされていることを確認してください。Python 自体はインストールされています。macOS または Linux をお使いの場合は、お使いのコンピューターにすでに Python がインストールされています。Python は python.org から入手できます。PyCharm の使用を開始するには、Python スクリプトを書いてみましょう。Python プロジェクトを作成する:ウェルカム画面を使用している場合は、新規プロジェクトをクリックします。すでにプロジェクト...

実行 / デバッグ構成: pytest

このダイアログを使用して、pytest の実行 / デバッグ構成を作成します。構成タブ:pytest ターゲット: script/module/custom ドロップダウンからターゲットを選択します: スクリプト: Python ファイルへのパス。モジュール: Python モジュール名とテストクラスインスタンス。カスタム: パス、モジュール、テストクラスインスタンスの任意の組み合わせ。選択したターゲットタイプに応じて、次の値を指定できます。テストファイルへのパス(例:/Users/jetbrains...

テスト結果を調べる

PyCharm でテストが実行されている間、テスト実行は実行ツールウィンドウのその実行構成のタブに表示されます。テスト実行が終了すると、そのタブでテスト結果を確認できます。右側のコンソールには、現在のテストセッションの出力が表示されます。テストの実行に関する詳細情報と、テストが失敗したか無視された理由を確認できます。テスト結果リストの上にあるテスト結果ツールバーを使用すると、成功したテストと無視されたテストの表示と非表示を切り替えたり、各テストの実行にかかった時間を表示したり、テスト結果をエクス...

Tox サポート

PyCharm は tox と統合され、複数の環境でテストを実行できます。トックスを設定する Python プロジェクトを作成します。プロジェクト Python インタープリターの tox をインストールします。プロジェクトに次のファイルがあることを確認します。tox.ini、テストファイル、毒性テストを実施するテスト要件を tox.ini ファイルに記録します。例:[tox] envlist = py310 py312 [testenv] deps = pytest pytest-bdd command...