PyUnit チュートリアル: Python ユニットテストフレームワーク(例付き)
単体テストとは何ですか?
単体テスト in Python バグの再発性が低く、修正コストが低いアプリケーションの開発段階の早い段階でバグを特定するために行われます。
ユニットテストは、スクリプト化されたコードレベルのテストで、 Python 機能の小さな「ユニット」を検証します。ユニット テストは、テスト フィクスチャに基づいたオブジェクト指向フレームワークです。
Python 単体テストの手法
Python ユニット テストでは、主に、依存コードにアクセスせずに特定のモジュールをテストします。開発者は、スタブやモックなどの手法を使用してコードを「ユニット」に分割し、個々の部分に対してユニット レベルのテストを実行できます。
- テスト駆動開発 TDD: ユニットテストは、 Pythonそのために開発者はテスト駆動開発手法を使用します。TDD手法では、まず設計を行い、 Python ユニットテストを実行してから、この機能を実装するコードの作成を続行します。
-
スタブとモック: これらは、テストされている偽のメソッドをシミュレートする XNUMX つの主な手法です。 あ スタブ 単体テストを正しく実行するために必要な依存関係を埋めるために使用されます。 あ モック 一方、アサートを入れたテストを実行する偽のオブジェクトです。
両方のメソッドの目的は同じで、クラスまたは関数のすべての依存関係のテストを省略します。
Python ユニットテストフレームワーク
ユニットテストのプロセスを容易にし、プロジェクトの品質を向上させるために、 Python ユニットテストフレームワーク。ユニットテストフレームワークには以下が含まれます。
-
ピユニット: PyUnit は、コードの自動テストのためのフィクスチャ、テスト ケース、テスト スイート、およびテスト ランナーをサポートしています。 PyUnit では、テスト ケースを同じフィクスチャを持つスイートに編成できます。
-
鼻: Noseの組み込みプラグインは、出力キャプチャ、コードカバレッジ、doctestsなどに役立ちます。Noseの構文は非常にシンプルで、テストを書く際の障壁を減らします。 Python テストを簡単にするための unittest。
- ドクターテスト: doctest テスト スクリプトは、ファイルの最後に小さな関数を含む docstring に記述されます。 Doctest を使用すると、ドキュメントに含まれているサンプルを実行し、期待した結果が返されることを確認することでコードをテストできます。 doctest の使用例はあまり詳細ではなく、特殊なケースを捉えていません。 これらは、モジュールとそのコンポーネントの主な使用例を表現するドキュメントとして役立ちます。
PyUnit を使用した単体テスト
Pyunitは Python の JUnit。 Pyunit の一部として、unittest モジュールには 5 つの主要なクラスがあります。
- テストケースクラス: TestCase クラスはテスト ルーチンを保持し、各ルーチンの作成とその後のクリーンアップのためのフックを提供します。
- TestSuiteクラス: コレクション コンテナとして機能し、複数のテストケース オブジェクトと複数のテストスイート オブジェクトを所有できます。
- TestLoaderクラス: このクラスは、ローカルまたは外部ファイルから定義されたテスト ケースとスイートを読み込みます。 これらのスイートとケースを所有するテストスイート オブジェクトを生成します。
- TextTestRunner クラス: テストを実行するための標準プラットフォームに対応します。
- TestResults クラス: テスト結果用の標準コンテナを提供します。
テストケースの設計 Python PyUnit を使用したテスト
単体テストは、新しいテスト ケースの作成に使用できる基本クラスであるテスト ケースを提供します。 テスト ケースの設計には、次の XNUMX つの方法セットが使用されます。
ユニットテスト.テストケース
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
最初のセットには、事前テストと事後テストのフックがあります。 setup() メソッドは各テスト ルーチンの前に始まり、teardown() メソッドはルーチンの後に始まります。
XNUMX 番目のメソッド セットはテストの実行を制御します。 どちらのメソッドもメッセージ文字列を入力として受け取り、進行中のテストをキャンセルします。 ただし、skiptest() メソッドは現在のテストを中止し、fail() メソッドは完全に失敗します。
最後の3番目のメソッドはテストの決定に役立ちます。メソッドid()はテストケースオブジェクトとテストルーチンの名前からなる文字列を返します。そしてメソッドshortDescription() は、各テスト ルーチンの開始時に docstr コメントを返します。
使用のメリット Python 単体テスト
- 開発サイクルの早い段階でバグを検出するのに役立ちます
- より良いプログラムを書くのに役立ちます
- 他のテスト方法やツールと簡単に同期できます
- バグがかなり減るだろう
- 将来の変更が容易になり、影響が非常に少なくなります