はじめに
この実験では、pytest フレームワークを使って Flask アプリケーションをテストする方法を学びます。テストはソフトウェア開発プロセスの重要な部分であり、アプリケーションの正確性と信頼性を保証するのに役立ちます。Flask はテスト用のユーティリティを提供しており、アプリケーションの異なる部分に対するテストを書きやすくします。
注:コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で Flask サービスの状態をプレビューできます。
テスト環境のセットアップ
Flask アプリケーションのテストを書き始める前に、テスト環境をセットアップする必要があります。以下がその手順です。
次のコマンドを実行して
pytestフレームワークをインストールします。pip install pytestFlask アプリケーションの
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 アプリケーションに対するテストを作成することで、その信頼性と安定性を保証するのに役立ちます。