Files
vscode-workbench/PLANNING/PROGRESS_S-01.md
T

2.7 KiB
Raw Blame History

PROGRESS_S-01 · DSP 测试基建 + 缺陷清扫

日期 2026-09-13 · 范围:只改 dsp 目录(dsp/backend + 报告)

基线(接手时实测)

  • DSP_TEST=1 python -m pytest tests/ → 49 passed(12 app 存量,非零测试)。
  • 不带 DSP_TEST=1 跑 → 37 errors(连 PG 超时):conftest 置变量晚于 pytest-django 初始化, 必须命令行前置 DSP_TEST=1(已写入统一入口,不改 conftest 行为)。
  • 真缺口:无统一入口、无 report.json、无 --http 交叉验证;5 处外部 id 裸 int(); visitors/logs/搜索边界覆盖薄。

改动(全部在 C:/Users/12914/Desktop/dsp/ 内)

  1. dsp/backend/tests/e2e/run_e2e.py(新建):统一入口——pytest 包装(ASGI 默认)+ --http/--base-url 真实服务交叉(health/search-hot/feed 三探针,失联优雅报告 connect FAIL)+ report.json(total/passed/failed/errored/skipped/duration/groups/http)。
  2. dsp/backend/tests/e2e/test_gap_coverage.py(新建,12 条):访客记录/列表、自访 400、 访客匿名 401、搜索空/脏查询不 500、suggest+hot、logs 上报闭环、通知列表+已读、 审核举报流、评论 missing-video 4xx、裸 int 静态自查、软删过滤静态自查。
  3. 缺陷清扫(静态自查真抓到 5 处,已修):
    • core/api.py:新增 opt_id()(非正整数回落,不抛 500)。
    • apps/visitors|moderation|creator|messages_app:裸 int(...get(...)) → opt_id; apps/music:手写 clamp → parse_page_size。
  4. dsp/backend/tests/e2e/__init__.py(新建空包)。

验收对照

  • 统一入口 61 passed(49 存量 + 12 新增)≥60
  • 存量零删除零跳过(skipped=0)
  • report.json 分组通过率产出
  • 缺口域盘点:visitors/logs/search/通知/审核/评论边界 + 反模式两项
  • 每个产品代码修复都有用例对应(5 处 opt_id 由静态自查用例锁定)
  • 隔离库:DSP_TEST=1 → SQLite 测试库(test_db.sqlite3),原始开发库零改动
  • 5xx:?page_size=abc 类输入已由 parse_page_size 收口(回归用例存量 test_page_size_junk_does_not_500)
  • --http 真实服务交叉:入口支持 + 失联优雅报告;无可用 DSP 服务实例,未实际打通(阻塞见下)

验证

cd dsp/backend && DSP_TEST=1 python tests/e2e/run_e2e.py
# 61 passed … 合计 61 用例 | 通过 61 | 失败 0 | 异常 0 | 跳过 0
cat tests/e2e/report.json

状态

done(ASGI 模式全绿)。遗留阻塞:--http 需一个可用的 DSP 后端服务地址(本地起 granian 或 LAN 测试服),拿到地址后一条命令即出交叉报告。