# D-02 · PG 并发测试环境(激活 4 个 skipped) | 字段 | 值 | |---|---| | 项目 | dealerhub · `Desktop/gj/dealerhub/backend` | | 优先级 | P1 · M3 | | 建议模型 | deepseek-v4-flash(主)/ glm-5.3-flash(复核) | | 依赖 | 无 | | 预估 | 0.5 天 | ## 一、背景(为什么做) 基线 `460 passed, 4 skipped`——4 个跳过用例全是 PostgreSQL 并发测试,需要 `config.settings.pgtest` 与可用 PG 实例。迭代 5 明确写了"本轮未伪造该环境结果"。**补齐测试矩阵最后一块,把"没验证"变成"已验证"。** ## 二、目标(交付物) 1. `config/settings/pgtest.py`:从环境变量读 PG 连接(或提供默认容器 DSN),并发测试专用。 2. 一条命令可建测试库并跑 4 个用例(附 Docker 命令或已有 PG 说明)。 3. 文档:`backend/docs/pgtest.md`(怎么起 PG、怎么跑、为什么这类测试必须真 PG)。 4. 4 个用例真实跑通(不再是 skip)。 ## 三、执行步骤 ```text 1. 找到 4 个 skip 用例(grep skip / pytest.mark.skipif)看它们的真实依赖 2. pgtest settings + 测试库隔离策略(绝不在开发/生产库上跑) 3. 本地起 PG(Docker 或复用现有实例)→ 跑通 4. 把命令固化进 README/docs ``` ## 四、验收标准 - [ ] `pytest -q --settings=config.settings.pgtest` 下 **4 个原跳过用例 passed**(贴原始输出) - [ ] 测试库与开发/生产严格隔离(DSN 不同、conftest 防护或文档明示) - [ ] 文档包含:环境准备一条命令、运行一条命令、常见坑 - [ ] 默认 `pytest -q` 行为不变(不强制依赖 PG) - [ ] 无生产配置变更 ## 五、验收命令(参考) ```bash # 起 PG(示例,按项目已有约定调整) docker run -d --rm --name dh-pgtest -p 15433:5432 -e POSTGRES_USER=dh -e POSTGRES_PASSWORD=dh -e POSTGRES_DB=dh_test postgres:16-alpine cd backend && pytest -q -k "concurren" --settings=config.settings.pgtest ``` ## 六、边界(不许做) - 不为了过测试放宽用例本身 - 不改生产 settings 默认值 - 不把测试库指向任何已有数据库 ## 七、交接 写 `PROGRESS_D-02.md`(含 4 用例 passed 原始输出 + PG 启动命令)。