第一步
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
"""Phase 1 冒烟测试:应用可创建、健康检查可用、错误体格式正确。"""
|
||||
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from app.main import app
|
||||
|
||||
|
||||
def _client() -> TestClient:
|
||||
# with 语句确保 lifespan(配置校验、data 目录创建)真实执行
|
||||
return TestClient(app)
|
||||
|
||||
|
||||
def test_liveness() -> None:
|
||||
with _client() as client:
|
||||
resp = client.get("/api/healthz")
|
||||
assert resp.status_code == 200
|
||||
assert resp.json() == {"status": "ok"}
|
||||
|
||||
|
||||
def test_readiness_all_components() -> None:
|
||||
with _client() as client:
|
||||
resp = client.get("/api/health")
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert body["status"] == "ok"
|
||||
assert set(body["components"]) == {"database", "storage"}
|
||||
assert all(c["status"] == "ok" for c in body["components"].values())
|
||||
|
||||
|
||||
def test_404_uses_unified_error_envelope() -> None:
|
||||
with _client() as client:
|
||||
resp = client.get("/api/nonexistent")
|
||||
assert resp.status_code == 404
|
||||
body = resp.json()
|
||||
assert body["code"] == "NOT_FOUND"
|
||||
assert isinstance(body["message"], str)
|
||||
Reference in New Issue
Block a user