PyCharm 2025.2 ヘルプ

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

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

テストランナーの選択

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

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

Selecting a test runner

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

テストの作成

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

Go to test

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

Create a new test

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

Create test dialog

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

Test class

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

Running a test from the context menu

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

Failed test

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

テストの作成

単体テストの書き方は、この記事の範囲外です。`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' を選択します。

Running unittest in a file

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

Run unittest

デバッグテスト

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

Selecting the failing test in the Run tool window

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

Test breakpoint

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

Debug

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

Debugging output

Step into ボタンをクリックしてクラス Car に移動し、デバッグツールウィンドウで自己ノードを展開します。

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

State before exception

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

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

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

  3. 変数の名前を入力します (例: avg_speed)。

    Introducing a variable
  4. ステートメント avg_speed = self.odometer / self.time を選択し、Ctrl+Alt+T ( コード | 囲む ) を押して、ステートメントに条件を追加するかどうかを選択します。

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

    Adding a stub if construct
  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 に切り替えて、テストを再度実行します

Passing tests

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

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

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

ツールバーの More をクリックし、自動的に再実行を選択します。

Turning on Auto-Test

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

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

2024 年 5 月 26 日

関連ページ:

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

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

最初の Python アプリケーションをデバッグする

問題の原因を突き止める:前のチュートリアルで Car スクリプトを作成して実行したことを覚えていますか ? もう少し遊んでみましょう。スクリプトを実行する、実行ツールウィンドウに対応するコマンドを入力して、車を 1 回加速し、2 回ブレーキをかけます。次に、を押してからを押して、車の実行距離計を表示します。スクリプトは、車が 0 キロメートル移動したことを示しています。一度アクセルを踏んだのである程度の距離は走ったはずなので、これは予想外の結果です。コードをデバッグしてその理由を調べてみましょう...

Python インタープリターを構成する

PyCharm の Python インタープリター:Python コードを PyCharm で動作させるには、少なくとも 1 つの Python インタープリターを設定する必要があります。Python インストールで利用可能なシステムインタープリターを使用できます。また、Virtualenv、pipenv、Poetry、uv、hatch、または conda の仮想環境を作成することもできます。仮想環境は、ベースインタープリターとインストールされたパッケージで構成されます。PyCharm Pro で...

パッケージのインストール、アンインストール、アップグレード

PyCharm は、特定の Python インタープリター用の Python パッケージをインストール、アンインストール、アップグレードする方法を提供します。これは、各プロジェクトに独自のパッケージセットがあることを意味し、これは Python 依存関係管理のベストプラクティスと見なされます。デフォルトでは、PyCharm はプロジェクトパッケージの管理に pip を使用します。conda 環境では、conda パッケージマネージャーを使用できます。PyCharm では、Python パッケージツー...

テストフレームワーク

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

テスト用の実行 / デバッグ構成を作成する

実行 / デバッグ構成を使用して、通常のアプリケーションの実行と同様の方法でテスト(テストケース、テストスイートなど)を実行できます。PyCharm は、テストをターゲットとして指定できる、テスト目的で特別な実行 / デバッグ構成を作成するためのフレームワークを提供します。PyCharm は、通常の実行構成を作成する通常の手順に加えて、コンテナー内のすべてのテスト、単一のテストケース、テストメソッドの実行 / デバッグ構成を作成できるショートカットを提供します。テスト設定を作成するエディターでテ...