Pytest
PyCharm は、完全な機能テストフレームワーク pytest (英語) をサポートしています。
次の機能が利用できます。
専用テストランナー。
テスト対象と pytest フィクスチャのコード補完。
コードナビゲーション。
詳細な失敗アサートレポート。
Python 2.7 および Python 3.5 以降をサポートします。
マルチプロセッシングテストの実行。
デフォルトでは、推奨されるデフォルトのテストランナーは unittest(英語) です。pytest を利用するには、最初にそれをデフォルトのテストランナーにする必要があります。
Pytest をインストールする
Python パッケージツールウィンドウに移動します
Python パッケージツールウィンドウの検索フィールドに
pytest
の入力を開始します。利用可能なパッケージのリストでパッケージを見つけて、インストールをクリックします。
pytest
パッケージがインストールされると、PyCharm はそれを検出し、デフォルトのプロジェクトテストランナーにします。プロジェクト設定でいつでもテストランナーを変更できます。
これで、pytest がデフォルトのテストフレームワークとして設定されたため、 Car
クラスの小さなテストを作成できます。brake
関数をチェックするための pytest テストを作成しましょう。
テストを作成する
Python プロジェクトを作成します。
メインメニューで、ファイル | 新規に移動し、Python ファイルを選択し、car.py と入力して、OK をクリックします。
Car クラスをコピーし、car.py ファイルに貼り付けます。
エディターで、
brake
メソッド宣言にキャレットを置きます。以下のいずれか 1 つを実行します:
に移動します。
コンテキストメニューから
を選択します。Ctrl+Shift+T を押します。
PyCharm は、利用可能なテストのリストを示しています。
新規テストの作成をクリックします。
テストの作成ダイアログが開きます。
テストの作成ダイアログで、以下の設定を指定します。
新しいテストクラスが生成されるターゲットディレクトリ。
テストファイルの名前(この例では test_car.py)、および必要に応じてテストクラスの名前。
テストクラスに含めるメソッドの横にあるチェックボックスを選択します。
キャレットをメソッド内に配置すると、このメソッド名のみがリストに含まれることに注意してください。また、命名規則に注意してください。テストメソッドには
test
接頭辞が付いています。テストの実行アイコンは、そのような接頭辞を持つすべてのメソッドのエディターガターに表示されます。
準備ができたら OK をクリックします。PyCharm は、指定された場所にテストファイルを生成します。
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 のテスト済みコードに移動できます。
テストを実行する
テストを実行するには、
をクリックします。
PyCharm は自動的に pytest 実行 / デバッグ構成を作成することに注意してください。
テストを実行するには、test_car_pytest に対して pytest を実行するを選択します。
テスト結果をインスペクションする:
assert
ステートメントを次のように変更します。assert my_car.speed == 4599
アサートに失敗したレポートを評価するためにテストを再実行します。
pytest は、失敗の明示的なレポートを提供します。
pytest フィクスチャを使用すると、テストモジュール全体で再利用できる小さなテストユニットを作成できます。必要なのは、再利用可能なユニットに @pytest.fixture
のマークを付けることだけです。
フィクスチャを使う
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 == 45my_car()
は、speed 値が 50 のCar
インスタンスを作成するフィクスチャ関数です。test_car_accelerate
およびtest_car_brake
で、Car
クラスの対応する関数が正しく実行されたことを確認するために使用されます。my_car
フィクスチャはtempdir
のような他の標準的な pytest フィクスチャと一緒にコード補完リストに追加されることに注意してください。いずれかの
アイコンをクリックするか、テストモジュール全体を実行します。
フィクスチャ関数の scope
パラメーターを使用して、テスト間でのフィクスチャインスタンスの共有を有効にすることができます。pytest フィクスチャの詳細については、pytest フィクスチャのドキュメント(英語)を参照してください。
事前定義されたデータセットに対してテストを実行することをお勧めします。PyCharm は、@pytest.mark.parametrize
を介して pytest に実装されたテストパラメーター化をサポートします。
パラメーターの適用
car.accelerate
およびcar.brake
機能をテストするための速度値のセットを作成しましょう:speed_data = {45, 50, 55, 100}
テストコードを次のように変更します。
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_acceleratePyCharm は新しく作成されたパラメーターを検出し、補完リストに追加することに注意してください。
car.brake()
関数のテストを実行します。次のテストレポートが必要です。
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...