Pytestによるテストの整理と実行
メニューを表示するにはスワイプしてください
Pythonでクリーンで表現力があり、保守性の高いテストコードを書きたい場合、pytestは人気のある選択肢です。組み込みのunittestフレームワークとは異なり、unittestは特定のアサーションメソッド(例:self.assertEqual)を必要とする厳格なクラスベースの構造に従いますが、pytestではシンプルな関数内で標準のPythonのassert文を使用できます。これにより、ボイラープレートコードが大幅に削減され、複雑なクラス階層にロジックをラップしたり、単純な結果を検証するためだけに多数のフレームワーク固有のアサーション名を覚える必要がなくなり、テストがより簡潔になります。
pytestの最も強力な機能の1つは、テスト発見システムです。プロジェクトディレクトリで単にpytestを実行するだけで、test_*.pyまたは*_test.pyというパターンに一致するすべてのファイルを自動的に検出し、それらのファイル内でtest_で始まるすべての関数を実行します。つまり、どのテストを実行するかを手動で指定する必要はなく、pytestが自動的に処理します。
もう1つの重要な利点は、フィクスチャの利用です。フィクスチャは、テストが必要とする一時ファイルやデータベース接続などのリソースの準備やクリーンアップを担当し、再利用しやすい方法で提供します。関数に@pytest.fixtureデコレーターを付与し、テスト関数の引数として要求するだけで利用できます。これにより、コードがモジュール化され、同じセットアップロジックを繰り返す必要がなくなります。
pytestを使い始めるには、まずインストールが必要です。ターミナルで次のコマンドを実行してください。
pip install pytest
これにより、pytestの最新バージョンがダウンロードおよびインストールされ、すぐにテストの作成と実行を始めることができます。
以下は、関数ベースのテストの記述方法や再利用可能なフィクスチャの定義方法を実践的に示した例です。
import pytest
# A simple function to test
def add(a, b):
return a + b
# Define a fixture that provides test data
@pytest.fixture
def sample_numbers():
return (3, 5)
# Test function using the fixture
def test_add_with_fixture(sample_numbers):
a, b = sample_numbers
result = add(a, b)
assert result == 8
# Another simple test function
def test_add_negative_numbers():
assert add(-2, -4) == -6
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください