PyCharm 2026.1 Help

最初の Python アプリケーションをテストする

最初のチュートリアルで 最初の Python アプリケーションを作成し 、2 番目のチュートリアルでそれを デバッグしたことを思い出してください。 今度はいくつかのテストを行ってみましょう。

テストランナーの選択

PyCharm は、 インストールされているテストランナーを Python インタープリター上で自動検出し、それを使用してテストを実行します。 特定のテストランナーがインストールされていない場合、PyCharm は unittestを使用します。

プロジェクト設定で必要なテストランナーを明示的に設定するには、 Ctrl+Alt+S を押して設定を開き、 Python | ツール | 統合ツール を選択して、 デフォルト テストランナー リストから対象のテストランナーを選択します。

テストランナーの選択

詳細については、 テストフレームワーク を参照してください。

テストの作成

テストを作成する簡単な方法は、テストしたいクラスからPyCharmにスタブを作成させることです。 これを行うには、 car.py を開き、クラスの名前を右クリックして 移動 をポイントし、 テスト​ を選択する必要があります(または Ctrl+Shift+T を押すだけです)。

テストに移動

新しいテストの作成を提案するポップアップが表示されます。

新しいテストを作成する

OK、やってみましょう。 私たちの車が加速しブレーキをかけることができるかどうかをテストするつもりのため、これらのチェックボックスを選択しましょう:

テストの作成ダイアログ

新しい Python テストクラスが作成されます:

テストクラス

クラス定義の横にあるガターにある 実行アイコン アイコンをクリックすると、テストを実行できます。 実行 / デバッグ構成は自動的に作成されます。

コンテキストメニューからテストを実行する

ただし、デフォルトではテストが失敗することがわかります。

失敗したテスト

テストを実行できることを知ったため、実際のテストコードを書き始めましょう。

テストの作成

単体テストの書き方は、この記事の範囲外です。 `unittest` フレームワークの使用について学びたい場合は、 このドキュメントをチェックしてください(英語)

この例では、次のテストを使用します。

from unittest import TestCase from car import Car class TestCar(TestCase): def setUp(self): self.car = Car() class TestInit(TestCar): def test_initial_speed(self): self.assertEqual(self.car.speed, 0) def test_initial_odometer(self): self.assertEqual(self.car.odometer, 0) def test_initial_time(self): self.assertEqual(self.car.time, 0) def test_initial_average_speed(self): self.assertEqual(self.car.average_speed(), 0) class TestAccelerate(TestCar): def test_accelerate_from_zero(self): self.car.accelerate() self.assertEqual(self.car.speed, 5) def test_multiple_accelerates(self): for _ in range(3): self.car.accelerate() self.assertEqual(self.car.speed, 15) class TestBrake(TestCar): def test_brake_once(self): self.car.accelerate() self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes(self): for _ in range(5): self.car.accelerate() for _ in range(3): self.car.brake() self.assertEqual(self.car.speed, 10) def test_should_not_allow_negative_speed(self): self.car.brake() self.assertEqual(self.car.speed, 0) def test_multiple_brakes_at_zero(self): for _ in range(3): self.car.brake() self.assertEqual(self.car.speed, 0)

テストを実行中

それでは、テストを実行しましょう。 test_car.py エディタータブを右クリックし、 実行 'Python tests in test_car.py' を選択します。

ファイルで単体テストを実行する

今回は、ほぼすべてのテストが正常に成功しました。

unittest を実行

デバッグテスト

テストコードを詳しく見て、失敗したテストをデバッグしてみましょう。 実行 ツールウィンドウの左側のペインで失敗したテストを選択し、右側のペインでエラーが発生した行番号を見つけます。

「実行ツール」ウィンドウで失敗したテストを選択する

エディターで行番号をクリックしてブレークポイントを設定します。

テストブレークポイント

次に、デバッガーセッションを起動します。 これを行うには、メソッド test_initial_average_speed でエディターの背景を右クリックし、コンテキストメニューから デバッグ を選択します。

デバッグ

デバッグ ツールウィンドウが開きます。

デバッグ出力

ステップイン​ ボタンをクリックしてクラス Car に移動し、 デバッグ ツールウィンドウで self ノードを展開します。

デバッガーは次に実行される行 (return self.odometer / self.time) をハイライトし、 デバッグ ツールウィンドウで self.speed が 0 に等しいことがわかります。

例外前の状態

ゼロによる除算は不可能であるため、次のステップで例外が発生します。 クラス Car にコードを追加して、これを修正しましょう。

  1. エディターで self.odometer / self.time を選択します。

  2. メインメニューまたはコンテキストメニューから リファクタリング | 変数の導入 を選択するか、 Ctrl+Alt+V を押します。

  3. 変数の名前を入力します。たとえば avg_speed

    変数の導入
  4. ステートメント avg_speed = self.odometer / self.time を選択し、 Ctrl+Alt+Tコード | 囲む )を押して、ステートメントに条件を追加する if を選択します。

    PyCharm はスタブ if 構造を作成します。

    スタブ if 構成要素の追加
  5. self.time が 0 に等しい場合は、これで除算しないでください。 そのため、 self.time != 0 と入力して条件を指定します。

    次に、 self.time がゼロのときに avg_speed がゼロになるように指定します。 取得するものは次のとおりです。

    def average_speed(self): if self.time != 0: avg_speed = self.odometer / self.time else: avg_speed = 0 return avg_speed

test_car.py に切り替えて、テストを再度 実行します

テストに合格する

すべてのテストに合格しました。

自動的にテストを実行する

最後の段落では、 Car クラスを修正した後、テストを手動で再実行しました。 コードに集中し、問題が解決した時だけ確認したい場合、PyCharm はテストを自動的に実行できます。

ツールバーの 詳細 をクリックし、 自動で再実行 を選択します。

自動テストをオンにする

実行ツールバーRun test automatically ボタンをクリックします。

これで、(以前に行ったように) プロジェクトファイルに変更を入力するたびに、介入なしでテストが実行されます。

2026 年 6 月 1 日