from contextlib import asynccontextmanager from unittest.mock import patch import pytest from fastapi import FastAPI from app.main import app_factory, lifespan, main @pytest.mark.asyncio async def test_lifespan(): app = FastAPI() assert isinstance(lifespan, asynccontextmanager(lifespan).__class__) async with lifespan(app): pass def test_app_factory(): app = app_factory() assert isinstance(app, FastAPI) assert app.router.lifespan_context == lifespan @patch("app.main.uvicorn.run") def test_main(mock_uvicorn_run): main() mock_uvicorn_run.assert_called_once_with( app_factory, factory=True, host="0.0.0.0", port=8000, )