PyTest: バックエンドエンジニア向けの Python テストフレームワーク

0 株式
0
0
0
0

導入

サポートエンジニアやQA/テストエンジニアにとって、コードの品質と信頼性を確保することは重要です。これを実現する一つの方法は、Pythonテストフレームワークを使用してテストプロセスを自動化し、ソフトウェアをリリースまたはデプロイする前にコード内のバグや問題を特定することです。.

次のような利点があります。

  • テスト フレームワークはコードの品質を向上させます。.
  • 自動テストにより時間と労力を節約できます。.
  • コードの再利用性によりテストの労力が最適化され、繰り返しが削減されます。.
  • Python テスト フレームワークは、他のツール、モジュール、ライブラリとシームレスに統合されます。.

このステップバイステップ ガイドでは、最も人気のある Python テスト フレームワークの 1 つである PyTest を実装する方法を学習します。.

前提条件

Python テスト フレームワークの詳細に入る前に、まず PyTest を実装するための前提条件に注目しましょう。.

  • Pythonのインストール:システムにPythonがインストールされていることを確認してください。最新バージョンのPythonは、Pythonの公式ウェブサイトからダウンロードできます。.
  • Pip をインストール: Pip (Package Installer for Python) は、Python のパッケージ、ライブラリ、依存関係を管理するためのツールです。Pip を使用すると、Python パッケージのインストールと管理が可能になります。システムに pip がインストールされていることを確認してください。.

コマンドライン/ターミナルで次のコマンドを実行すると、pip がインストールされているかどうかを確認できます。

python -m pip --version

または

python3 -m pip --version

Python テスト フレームワークとは何ですか?

Pythonテストフレームワークは、自動テストのためのPythonテストの作成と実行のための構造とガイドラインを提供するツールとライブラリのセットです。コードが要求された品質基準を満たすことを保証します。バックエンド開発者、ソフトウェアエンジニア、DevOps、QA/テストエンジニアにとって不可欠かつ有用なツールです。有名で広く使用されているPythonテストフレームワークには、Pytest、PyUnit、DocTest、Testify、Robotなどがあります。.

PyTestの実装

PyTestのインストール

PyTestを使い始めるには、システムにインストールする必要があります。ターミナルを開いて、以下のコマンドを実行してください。

pip install pytest

このコマンドは、PyTest とその依存関係の最新バージョンをダウンロードしてインストールします。.

ライティングテスト項目

PyTest がインストールされたので、基本的な単体テストケースの作成を始めましょう。.

新しいPythonファイルを作成し、名前を付けてください テストバックエンド.py このファイルは、PyTest 構文を使用してテスト ケースを定義します。.

注: デフォルトでは、PyTest は「test_」で始まるか「_test」で終わるファイル内のすべてのテストケースを検出して実行します。pytest の検出プロセスは、現在のフォルダとそのサブフォルダを再帰的にスキャンし、「test_」で始まるか「_test」で終わるファイルを検索します。そして、それらのファイル内のテストを実行します。.

import pytest
def test_addition():
assert 3 + 3 == 6
def test_subtraction():
assert 5 - 4 == 1
def test_multiplication():
assert 4 * 4 == 16
def test_division():
assert 10 / 2 == 5

上記の例では、4つの基本的なユニットテストを関数として定義しています。test_addition、test_subtraction、test_multiplication、test_divisionです。assertキーワードはコードのデバッグ時に使用され、コード内の特定の条件がTrueを返すかどうかをテストできます。Trueでない場合は、AssertionErrorを返します。.

テストケースの実行、特定のテストの実行

テストを実行するには、test_backend.py ファイルを保存したフォルダーに移動し、ターミナルまたはコマンド ラインで次のコマンドを実行します。

pytest

または

python -m pytest

出力:

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ....
==================================================
4 passed in 0.01s 

PyTest を使用すると、ファイル内の各テストを手動で実行する必要はありません。ツールは定義されたすべてのテストケースを自動的に検出して実行します。すべてがうまくいき、すべてのアサーションが正しければ、上記のように、テスト結果のわかりやすい概要と合格したテストの数が表示されます。.

その時点でテストの 1 つが失敗したと仮定すると、次の出力が表示されます。

Output
test session starts
==================================================
platform darwin -- Python 3.9.6, pytest-7.4.3, pluggy-1.3.0
rootdir: ~/Python Testing Frameworks
collected 4 items
test_backend.py ...F 
================================================== [100%]
FAILURES
==================================================
test_division 
def test_division():
> assert 10 / 2 == 6
E assert (10 / 2) == 6
test_backend.py:13: AssertionError
short test summary info
==================================================
FAILED test_backend.py::**test_division** - assert (10 / 2) == 6
1 failed, 3 passed in 0.01s 
実験的発見

PyTestは強力なテスト検出機能を備えており、テストケースを構造的に整理できます。デフォルトでは、PyTestは「test_」で始まるか「_test」で終わる名前のファイル内のすべてのテストケースを検出して実行します。ただし、さまざまなコマンドラインオプションや設定ファイルを使用して、テスト検出プロセスをカスタマイズできます。 pytest.ini カスタマイズ。.

たとえば、次のコマンドを実行して、テスト モジュールを検索する特定のディレクトリを指定できます。

pytest tests/

このコマンドは、「tests」ディレクトリ内のテストケースのみを実行します。.

試験装置

Pytestのテストツールは、テストケースの一貫したベースラインを設定するために再利用できる優れたコンポーネントです。テストの前提条件を作成したい場合や、テスト完了後にリソースをクリーンアップしたい場合に便利です。PyTestを使用すると、テストツールを簡単に定義し、美しく使用できます。.

テスト フィクスチャを定義するには、デコレータを使用する必要があります。 @pytest.fixture 例えば、以下で定義される db というフィクスチャは、データベース接続を開き、操作後に接続を閉じます。このフィクスチャは次のように定義できます。

import pytest
@pytest.fixture
def db():
# Set up the database connection
db = create_db()
yield db
# Clean up the database connection
db.close()

この例では、yield文はテストケースの実行後に実行されるコードを定義します。yieldキーワードは、Pythonで値を返すために使用されるreturn文と同様に、ジェネレータ関数のフローを制御するために使用されます。.

テストでフィクスチャを使用するには、それをテスト関数に引数として渡す必要があります。.

例えば:

def query_test(db):
results = db.query("SELECT * FROM users")
assert len(result) == 12

このテストケースでは、フィクスチャ デシベル 自動的に機能する クエリテスト() 注入することで、データベース操作の実行が可能になります。フィクスチャは、データベース接続、APIクライアント、モックオブジェクトなど、特定のテスト環境を準備する際に役立ちます。フィクスチャを使用することで、開発者はテストが分離され、繰り返し実行可能であることを保証できます。.

テストエンジニアは、機器を使用して、テスト対象のシステムの準備、テスト データの管理、複雑なシナリオのシミュレーションを行うこともできます。.

さらに、これらのデバイスは、テスト後のリソースのクリーンアップ、信頼性の向上、テスト セットの維持にも使用できます。.

結果

このチュートリアルでは、最も人気があり機能豊富なPythonテストフレームワークの一つであるPyTestの実装方法と使用方法を学び、Pythonで実装するためのステップバイステップガイドを提供しました。コードベースが進化するにつれて、テストケースを継続的に作成・更新することが不可欠です。テストに時間と労力を費やすことで、バグをより早く特定し、コードの品質を向上させ、より堅牢で信頼性の高いソフトウェアを提供できるようになります。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない