chore: 清理worktree验证测试文件
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""
|
||||
基线测试:KPI创建接口缺少必填元数据字段时返回 HTTP 422。
|
||||
|
||||
场景:POST /api/cma/kpis 请求体不传 formula 字段(数据治理规则2: 元数据必填),
|
||||
期望返回 HTTP 422,且 errors 中包含 formula 相关提示。
|
||||
"""
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from tests.conftest import create_test_user, get_token_for_user, auth_header
|
||||
|
||||
|
||||
class TestKpi422Baseline:
|
||||
"""KPI创建缺少必填元数据字段 → 422 基线测试"""
|
||||
|
||||
def test_create_kpi_missing_formula_returns_422(self, client: TestClient, db: Session):
|
||||
"""不传 formula 字段时,创建KPI返回 422"""
|
||||
create_test_user(db)
|
||||
token = get_token_for_user(client)
|
||||
|
||||
# 构造请求体:其余必填字段齐全,唯独不传 formula
|
||||
payload = {
|
||||
"kpi_code": "F_BASELINE_001",
|
||||
"kpi_name": "基线测试收入指标",
|
||||
"dimension": "finance",
|
||||
"target_value": 1000000,
|
||||
"unit": "元",
|
||||
# 注意:故意不传 formula(必填元数据字段)
|
||||
"data_source": "测试系统",
|
||||
"data_owner": "测试管理员",
|
||||
}
|
||||
resp = client.post("/api/cma/kpis", headers=auth_header(token), json=payload)
|
||||
assert resp.status_code == 422, f"期望422,实际 {resp.status_code}: {resp.text}"
|
||||
|
||||
# 校验错误信息中包含 formula 字段
|
||||
# 注意:FastAPI HTTPException(detail=dict) 时响应体为 {"detail": {...}}
|
||||
body = resp.json()
|
||||
detail = body.get("detail", {})
|
||||
errors = detail.get("errors", []) if isinstance(detail, dict) else []
|
||||
assert any("formula" in e for e in errors), f"errors 应提及 formula: {body}"
|
||||
Reference in New Issue
Block a user