Files
selfrelease fad458b2a7 docs(uiux): UIUX 设计方案大改 + 5 份作业指导书对齐 + 开发任务文档
- UIUX 文档:填充 19 个缺口(多主体画像/健康度/AI+看板/增长域/洞察域/创始人端/OODA/助推/商密)
- UIUX 文档:插入 6 个新章节(十四~十九),旧章节重编号为二十~三十一,更新目录和交叉引用
- 作业指导书 x5:导航改为 6 域分组,新增 Context Bar/工作模式/Insight Rail/决策线程/多工作区等 UI 概念
- 新建 docs/2-task-uiux.md:50 个代码落地开发任务,按 P0-P6 分优先级 + 8 Sprint 规划
- 后端/前端:大量新增模型、路由、组件(来自之前 Phase 开发)
2026-07-19 11:53:38 +08:00

60 lines
2.2 KiB
Python

"""T2.11 文件上传测试。"""
import pytest
from fastapi.testclient import TestClient
class TestFileUpload:
"""月报文件上传接口测试。"""
def test_upload_txt_file(self, client: TestClient, auth_headers: dict):
"""上传 TXT 文件应成功解析。"""
resp = client.post(
"/api/v1/reports/upload",
files={"file": ("test.txt", "月报内容:营收 100 万,增长 20%".encode("utf-8"), "text/plain")},
headers=auth_headers,
)
assert resp.status_code == 200
data = resp.json()["data"]
assert data["filename"] == "test.txt"
assert "extracted_text" in data
assert "月报内容" in data["extracted_text"]
def test_upload_csv_file(self, client: TestClient, auth_headers: dict):
"""上传 CSV 文件应成功解析。"""
csv_content = b"month,revenue\n2024-01,1000000\n2024-02,1200000"
resp = client.post(
"/api/v1/reports/upload",
files={"file": ("report.csv", csv_content, "text/csv")},
headers=auth_headers,
)
assert resp.status_code == 200
data = resp.json()["data"]
assert "revenue" in data["extracted_text"]
def test_upload_no_auth(self, client: TestClient):
"""未认证应返回 401。"""
resp = client.post(
"/api/v1/reports/upload",
files={"file": ("test.txt", b"content", "text/plain")},
)
assert resp.status_code == 401
def test_upload_unsupported_format(self, client: TestClient, auth_headers: dict):
"""不支持的文件格式应返回 400。"""
resp = client.post(
"/api/v1/reports/upload",
files={"file": ("test.exe", b"binary", "application/octet-stream")},
headers=auth_headers,
)
assert resp.status_code == 400
def test_upload_empty_filename(self, client: TestClient, auth_headers: dict):
"""空文件名应返回 422。"""
resp = client.post(
"/api/v1/reports/upload",
files={"file": ("", b"content", "text/plain")},
headers=auth_headers,
)
assert resp.status_code == 422