test: add pytest baseline

This commit is contained in:
ila
2026-07-04 23:34:05 +08:00
parent 3405e0c6bb
commit aaf35f2d7a
10 changed files with 44 additions and 22 deletions
+4 -4
View File
@@ -16,7 +16,7 @@
| 请求归档 | 本地 JSON 文件 | 已定 | `archives/` 每个接口请求一个完整归档文件,部署在内网前置机,不脱敏 |
| 数据库 | 待定 | 待定 | MVP 可先只用 Redis;上报流水可能需要 MySQL / SQLite / PostgreSQL |
| 第三方鉴权 | 待定,建议 app_key + HMAC 或 Bearer Token | 待定 | 不建议第三方直接裸传 CHIS 账号密码 |
| 测试 | pytest | 建议 | 适合 mapper、client、service 单元测试 |
| 测试 | pytest 8.3.5 | 已定 | 兼容当前系统 Python 3.8;适合 mapper、client、service 单元测试 |
| 部署 | 待定,建议 gunicorn / waitress + systemd / Windows 服务 | 待定 | 取决于部署环境 |
## 二、决策记录与演进
@@ -36,16 +36,16 @@
## 三、构建与运行命令
当前尚未初始化项目代码,命令待 T-001 补齐。
当前可用命令:
| 用途 | 命令 |
| --- | --- |
| 安装依赖 | `python -m pip install -r requirements.txt` |
| 本地开发 | `python run.py` |
| 测试 | `python -m unittest discover -s tests` |
| 测试 | `python -m pytest` |
| 格式化 / 静态检查 | 待定 |
当前可用文档检查:
可选文档检查:
```powershell
Get-ChildItem -Recurse -File # PowerShell
+3 -4
View File
@@ -55,14 +55,13 @@
- client 测试:超时、CHIS 错误码、未登录重登。
- API 测试:鉴权失败、参数失败、幂等重复、成功提交。
当前文档阶段可运行:
当前标准测试命令:
```powershell
Get-ChildItem -Recurse -File # PowerShell
# bash 等价: find . -type f -not -path './.git/*'
python -m pytest
```
代码阶段的真实命令待 T-001 补齐。
必要时可补充运行 `python -m unittest discover -s tests`,但 T-003 之后以 pytest 为主测试入口。
## 6. 绝不
+1 -1
View File
@@ -20,7 +20,7 @@
| --- | --- | --- | --- | --- |
| T-001 | 初始化 Flask 项目骨架 | - | 使用当前系统 Python 3.8,不创建虚拟环境;创建 `requirements.txt` 并固定 `Flask==3.0.3`;使用 application factory 模式实现 `create_app(config_object=None)`;本地 health check API 可启动;真实命令同步到技术栈和当前状态 | DONE |
| T-002 | 建立基础配置与目录 | T-001 | 目录符合架构文档;配置从环境变量读取;无真实密钥 | DONE |
| T-003 | 建立最小测试框架 | T-001 | pytest 可运行;至少有 `create_app` / health check 测试,能通过测试配置创建 Flask app | TODO |
| T-003 | 建立最小测试框架 | T-001 | pytest 可运行;至少有 `create_app` / health check 测试,能通过测试配置创建 Flask app | DONE |
## Phase 1 · CHIS 登录与会话
+11 -9
View File
@@ -5,13 +5,13 @@
## 当前快照
- 日期:2026-07-04
- 阶段:MVP 起步 / Flask 地基已初始化
- 技术栈:当前系统 Python 3.8、Flask 3.0.3 application factory;不创建虚拟环境
- 阶段:MVP 起步 / Phase 0 地基已完成
- 技术栈:当前系统 Python 3.8、Flask 3.0.3 application factory、pytest 8.3.5;不创建虚拟环境
- 生产代码:`app/__init__.py`、`app/api/health.py`、`app/config.py`、`run.py`,以及 `app/middleware/`、`app/services/`、`app/mappers/`、`app/chis/`、`app/repositories/`、`app/validators/` 包目录
- 测试:`tests/test_app_factory.py`、`tests/test_config_and_structure.py`
- 测试:`tests/test_app_factory.py`、`tests/test_config_and_structure.py`、`tests/test_project_setup.py`
- 数据 / 资料:`reverse_file/` 下已有 CHIS HAR、前端脚本和 schema;`D:\hans\chupd\chis\login_client_v2.py` 可作为登录链路参考
- 标准启动路径:`python run.py`
- 标准验证路径:`python -m unittest discover -s tests`
- 标准验证路径:`python -m pytest`
- 当前 blocker:无硬阻塞;后续实现需要把 Django 登录代码迁移为 Flask 版本,并通过配置提供 CHIS public key;访问 CHIS 时需要支持可选 SOCKS5 代理
## 当前目录要点
@@ -29,22 +29,24 @@
| `app/repositories/` | 已有 | 存储 / 缓存包目录 |
| `app/services/` | 已有 | 应用服务层包目录 |
| `app/validators/` | 已有 | 请求校验包目录 |
| `tests/` | 已有 | `unittest` 测试 |
| `requirements.txt` | 已有 | Python 依赖,固定 `Flask==3.0.3` |
| `tests/` | 已有 | pytest 可收集的测试 |
| `pytest.ini` | 已有 | pytest 测试入口配置,限制测试目录为 `tests` |
| `requirements.txt` | 已有 | Python 依赖,固定 `Flask==3.0.3` 和 `pytest==8.3.5` |
| `.env.example` | 已有 | 环境变量占位示例,不含真实密钥 |
## 任务看板状态
任务状态以 [06-tasks.md](06-tasks.md) 为准。
- 已完成:DOC-001 建立 harness coding 项目文档;DOC-002 更新 CHIS 登录与只读查询验证路线;DOC-003 明确使用系统 Python 3.8;DOC-004 明确 Flask factory 模式;DOC-005 明确日志与请求归档方案;T-001 初始化 Flask 项目骨架;T-002 建立基础配置与目录。详见 [../progress.md](../progress.md)。
- 已完成:DOC-001 建立 harness coding 项目文档;DOC-002 更新 CHIS 登录与只读查询验证路线;DOC-003 明确使用系统 Python 3.8;DOC-004 明确 Flask factory 模式;DOC-005 明确日志与请求归档方案;DOC-006 明确 CHIS SOCKS5 代理配置;T-001 初始化 Flask 项目骨架;T-002 建立基础配置与目录;T-003 建立最小测试框架。详见 [../progress.md](../progress.md)。
- 正在进行:无。
- 下一个可领取任务:T-003 建立最小测试框架。
- 下一个可领取任务:T-101 迁移 CHIS 登录链路。
## 已确认技术事实
- CHIS public key 可通过配置文件或环境变量提供。
- 使用当前系统 Python 3.8 环境,不创建虚拟环境;T-001 创建 `requirements.txt` 固定依赖。
- pytest 8.3.5 已固定到 `requirements.txt`;标准测试命令为 `python -m pytest`。
- Flask 应用使用 application factory 模式,`app/__init__.py` 暴露 `create_app(config_object=None)`。
- 基础配置通过环境变量读取:`CHIS_BASE_URL`、`CHIS_PUBLIC_KEY`、`CHIS_PROXY`、`REDIS_URL`、`LOG_DIR`、`ARCHIVE_DIR`。
- CHIS 外呼支持可选 SOCKS5 代理配置:`CHIS_PROXY` 为空直连;有值时后续 CHIS client 对登录、会话验证、查询和保存请求统一走代理。
@@ -61,7 +63,7 @@
```powershell
python -m pip install -r requirements.txt
python -m unittest discover -s tests
python -m pytest
python run.py
```