PyCharm 2026.2 Help

Pytest(パイテスト)

PyCharm は、完全な機能を備えたテストフレームワーク pytest をサポートします。

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

  • 専用テストランナー。

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

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

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

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

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

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

Pytest をインストールする

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

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

    Pytest のインストール

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

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

テストを作成する

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

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

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

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

  5. 次のいずれかを実行します:

    • 移動 | テスト に進みます。

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

      テストに移動
    • Ctrl+Shift+T を押す。

    PyCharm は、利用可能なテストの一覧を表示します。

    pytest の新しいテスト
  6. 新規テストの作成 をクリックしてください。

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

    ブレーキ方式の python テストを作成する

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

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

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

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

      キャレットがメソッド内にある場合、そのメソッド名だけがリストに含まれることに注意してください。 また、命名規則にもご注意ください。テストメソッドには test プレフィックスが付いています。 そのようなプレフィックスを持つすべてのメソッドには、エディターガターに Run 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 クラスのインスタンスに対して補完を提供します。

テスト対象の自動補完

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

テストを実行する

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

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

    pytest の実行 / デバッグの推奨設定

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

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

    Pytest run
  4. assert ステートメントを次のように変更してください: assert my_car.speed == 4599。

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

    失敗したレポートをアサートする

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

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

    3 回のテストが失敗し、1 回のテストが car.brake 機能に合格しました

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

2026 年 7 月 14 日