PyUnit チュートリアル: Python 単体テスト フレームワーク (例付き)

単体テストとは何ですか?

単体テスト in Python バグの再発性が低く、修正コストが低いアプリケーションの開発段階の早い段階でバグを特定するために行われます。

単体テストは、機能の小さな「単位」を検証するために Python で設計されたスクリプト化されたコード レベルのテストです。 単体テストは、テスト フィクスチャをベースにしたオブジェクト指向フレームワークです。

Python 単体テストのテクニック

Python 単体テストでは主に、依存コードにアクセスせずに特定のモジュールをテストします。 開発者はスタブやモックなどの手法を使用してコードを「ユニット」に分割し、個々の部分に対してユニットレベルのテストを実行できます。

  • テスト駆動開発 TDD: 単体テストは Python とともに実行する必要があり、そのために開発者はテスト駆動開発手法を使用します。 TDD メソッドでは、最初に Python 単体テストを設計し、その後でこの機能を実装するコードの記述を続けます。
  • スタブとモック: これらは、テストされている偽のメソッドをシミュレートする XNUMX つの主な手法です。 あ スタブ 単体テストを正しく実行するために必要な依存関係を埋めるために使用されます。 あ モック 一方、アサートを入れたテストを実行する偽のオブジェクトです。

    両方のメソッドの目的は同じで、クラスまたは関数のすべての依存関係のテストを省略します。

Python 単体テスト フレームワーク

単体テストのプロセスを容易にし、プロジェクトの品質を向上させるには、Python 単体テスト フレームワークをお勧めします。 単体テスト フレームワークには以下が含まれます

Python 単体テストのテクニック

  • ピユニット: PyUnit は、コードの自動テストのためのフィクスチャ、テスト ケース、テスト スイート、およびテスト ランナーをサポートしています。 PyUnit では、テスト ケースを同じフィクスチャを持つスイートに編成できます。
  • 鼻: Nose の組み込みプラグインは、出力キャプチャ、コード カバレッジ、doctest などに役立ちます。Nose 構文は非常に単純で、テスト作成の障壁が軽減されます。 Python の単体テストを拡張してテストを容易にします。
  • ドクターテスト: doctest テスト スクリプトは、ファイルの最後に小さな関数を含む docstring に記述されます。 Doctest を使用すると、ドキュメントに含まれているサンプルを実行し、期待した結果が返されることを確認することでコードをテストできます。 doctest の使用例はあまり詳細ではなく、特殊なケースを捉えていません。 これらは、モジュールとそのコンポーネントの主な使用例を表現するドキュメントとして役立ちます。

PyUnit を使用した単体テスト

Pyunit は Python ポートです JUnit。 Pyunit の一部として、unittest モジュールには 5 つの主要なクラスがあります。

PyUnit を使用した単体テスト

  • テストケースクラス: TestCase クラスはテスト ルーチンを保持し、各ルーチンの作成とその後のクリーンアップのためのフックを提供します。
  • TestSuiteクラス: コレクション コンテナとして機能し、複数のテストケース オブジェクトと複数のテストスイート オブジェクトを所有できます。
  • TestLoaderクラス: このクラスは、ローカルまたは外部ファイルから定義されたテスト ケースとスイートを読み込みます。 これらのスイートとケースを所有するテストスイート オブジェクトを生成します。
  • TextTestRunner クラス: テストを実行するための標準プラットフォームに対応します。
  • TestResults クラス: テスト結果用の標準コンテナを提供します。

PyUnit を使用した Python テストのテスト ケースの設計

単体テストは、新しいテスト ケースの作成に使用できる基本クラスであるテスト ケースを提供します。 テスト ケースの設計には、次の XNUMX つの方法セットが使用されます。

Python のテスト ケースを設計する

ユニットテスト.テストケース

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

最初のセットには、事前テストと事後テストのフックがあります。 setup() メソッドは各テスト ルーチンの前に始まり、teardown() メソッドはルーチンの後に始まります。

XNUMX 番目のメソッド セットはテストの実行を制御します。 どちらのメソッドもメッセージ文字列を入力として受け取り、進行中のテストをキャンセルします。 ただし、skiptest() メソッドは現在のテストを中止し、fail() メソッドは完全に失敗します。

最後の方法または XNUMX 番目の方法は、テストを決定するのに役立ちます。 メソッド id() は、テストケース オブジェクトの名前とテスト ルーチンの名前で構成される文字列を返します。 また、メソッド shortDescription() は、各テスト ルーチンの開始時に docstr コメントを返します。

Python 単体テストを使用する利点

  • 開発サイクルの早い段階でバグを検出するのに役立ちます
  • より良いプログラムを書くのに役立ちます
  • It sync他のテスト方法やツールを使用して簡単に実行できる
  • バグがかなり減るだろう
  • 将来の変更が容易になり、影響が非常に少なくなります