56 lines
2.2 KiB
Markdown
56 lines
2.2 KiB
Markdown
# 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 启动命令)。
|