はじめに
この実験では、pytest フレームワークを使って Flask アプリケーションをテストする方法を学びます。テストはソフトウェア開発プロセスの重要な部分であり、アプリケーションの正確性と信頼性を保証するのに役立ちます。Flask はテスト用のユーティリティを提供しており、アプリケーションの異なる部分に対するテストを書きやすくします。
注:コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で Flask サービスの状態をプレビューできます。
この実験では、pytest フレームワークを使って Flask アプリケーションをテストする方法を学びます。テストはソフトウェア開発プロセスの重要な部分であり、アプリケーションの正確性と信頼性を保証するのに役立ちます。Flask はテスト用のユーティリティを提供しており、アプリケーションの異なる部分に対するテストを書きやすくします。
注:コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で Flask サービスの状態をプレビューできます。
Flask アプリケーションのテストを書き始める前に、テスト環境をセットアップする必要があります。以下がその手順です。
次のコマンドを実行して pytest フレームワークをインストールします。
pip install pytest
Flask アプリケーションの tests フォルダに conftest.py という新しいファイルを作成します。
conftest.py ファイルで必要なモジュールをインポートします。
import pytest
from my_app import create_app
アプリケーションインスタンスを作成して構成する app という名前のフィクスチャを定義します。
@pytest.fixture()
def app():
app = create_app()
app.config.update({
"TESTING": True,
})
yield app
アプリケーションファクトリパターンを使用している場合は、フィクスチャを適切に変更する必要があります。
テストクライアントと CLI ランナー用のフィクスチャを定義します。
@pytest.fixture()
def client(app):
return app.test_client()
@pytest.fixture()
def runner(app):
return app.test_cli_runner()
テスト環境をセットアップしたので、Flask アプリケーションのテストを作成し始めることができます。作成したい一般的なテストの例をいくつか紹介します。
ルートをテストする
def test_hello(client):
response = client.get("/")
assert response.status_code == 200
assert b"Hello, World!" in response.data
このテストは、ルート ("/") に対して GET リクエストを送信し、レスポンスのステータスコードが 200 であり、レスポンスデータに文字列 "Hello, World!" が含まれていることを確認します。
POST リクエストをテストする
def test_login(client):
response = client.post("/login", data={"username": "test", "password": "pass"})
assert response.status_code == 200
assert b"Logged in successfully" in response.data
このテストは、ユーザー名とパスワードを含むフォームデータを使って、ログインルート ("/login") に対して POST リクエストを送信します。レスポンスのステータスコードが 200 であり、レスポンスデータに文字列 "Logged in successfully" が含まれていることを確認します。
コマンドをテストする
def test_hello_command(runner):
result = runner.invoke(args=["hello"])
assert result.exit_code == 0
assert "Hello, World!" in result.output
このテストは、"hello" という名前のコマンドを実行し、コマンドがコード 0 で終了し、出力に文字列 "Hello, World!" が含まれていることを確認します。
テストを実行するには、ターミナルで Flask アプリケーションのルートフォルダに移動し、次のコマンドを実行します。
pytest
このコマンドは、tests フォルダ内のすべてのテストを検出して実行します。ターミナル出力にテスト結果が表示されるはずです。
この実験では、pytest フレームワークを使って Flask アプリケーションをテストする方法を学びました。テスト環境をセットアップし、アプリケーションの異なる部分に対するテストを作成し、コードの正確性を検証するためにテストを実行しました。テストはソフトウェア開発プロセスの不可欠な部分であり、Flask アプリケーションに対するテストを作成することで、その信頼性と安定性を保証するのに役立ちます。