概要
このモジュールでは、より表現力が高く保守しやすいテストを記述するのに役立つ pytest 機能について説明しました。
@pytest.mark.parametrizeを使用して、複数の入力値で同じテスト関数を実行しました。 Pytest では、各パラメーター セットが個別のテスト ケースとして収集されるため、レポートでは、渡された入力または失敗した入力を正確に識別できます。
また、治具を使用しました。 フィクスチャは再利用可能なセットアップ コードを提供し、関数引数を使用してテストの依存関係を明示的にし、 yieldベースの破棄と適切なフィクスチャ スコープを使用してクリーンアップを管理できます。 これらのアイデアを適用するには、パラメーター化されたテストを記述し、一時ファイル処理に pytest のsetup_method()フィクスチャを使用するカスタムフィクスチャに xUnit スタイルのteardown_method()およびtmp_pathアプローチからクラスベースのテストをリファクタリングします。 また、テスト関数の呼び出しごとにtmp_path一時ディレクトリを提供するpathlib.Pathや、属性、ディクショナリ値、環境変数、monkeypatch、または現在の作業ディレクトリを一時的に変更し、要求するテストまたはフィクスチャの完了後にそれらの変更を復元するsys.pathなど、組み込みのフィクスチャも確認しました。
次のことが可能になりました。
- パラメーター化を使用して、テスト関数を繰り返さずに複数の入力をカバーします。
- pytest 出力を読み取り、合格または失敗したパラメーター値を診断します。
- カスタムフィクスチャを作成して、セットアップとクリーンアップロジックを共有します。
- セットアップの実行頻度とクリーンアップのタイミングに基づいて、フィクスチャスコープを選択します。
- 共有フィクスチャを
conftest.pyに置くことで、同じディレクトリやそのサブディレクトリにあるテストがそれらを明示的にインポートすることなく要求できるようにします。 - ファイル、環境変数、インポート、または外部状態に依存するテストを分離するには、一時ファイルの
tmp_pathやスコープ付きの状態変更のmonkeypatchなど、組み込みのフィクスチャを使用します。
詳細については、 parametrizing テスト、 フィクスチャ、 組み込みのフィクスチャ、 一時ディレクトリとファイル、 xUnit スタイルのセットアップ、 およびモンキーパッチに関する pytest ドキュメントを参照してください。