- ユニットテスト: ユニットテストは、個々の関数やクラスの動作をテストするためのものです。FastAPIアプリケーションの各エンドポイントやモデルに対して、個別のテストケースを作成することができます。以下は、FastAPIアプリケーションのエンドポイントをテストするための例です。
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_item():
response = client.get("/items/foo")
assert response.status_code == 200
assert response.json() == {"item_id": "foo"}
- 統合テスト: 統合テストは、アプリケーション全体の動作をテストするためのものです。FastAPIでは、TestClientを使用してアプリケーションをテストすることができます。以下は、FastAPIアプリケーション全体をテストするための例です。
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_create_item():
item = {"name": "example", "description": "example description"}
response = client.post("/items/", json=item)
assert response.status_code == 200
assert response.json()["name"] == item["name"]
- モックを使用したテスト: FastAPIアプリケーションが外部サービスと連携している場合、モックを使用して外部サービスの応答をシミュレートすることができます。これにより、外部サービスが利用できない場合でもアプリケーションのテストを行うことができます。以下は、外部サービスとの連携をテストするための例です。
from fastapi.testclient import TestClient
from main import app
from unittest import mock
client = TestClient(app)
@mock.patch("app.external_service.get_data")
def test_process_data(mock_get_data):
mock_get_data.return_value = {"id": 1, "name": "mocked data"}
response = client.get("/process_data")
assert response.status_code == 200
assert response.json() == {"processed_data": "mocked data"}
これらの例は、FastAPIアプリケーションのテスト方法の一部です。テストはバグを見つけるだけでなく、アプリケーションの品質を向上させるためにも重要です。以上の方法とコード例を使用して、FastAPIアプリケーションのテストを効果的に行うことができます。