自动化测试
仓库根目录的 autotest/ 用 Python + pytest + httpx 对真实跑着的服务做外层接口验收,覆盖登录、权限等核心主线流程。
它不替代 backend/core 里的单元测试,而是在架构变更、数据库变更、部署方式调整之后,快速重跑一遍,确认关键路径仍然可用。
定位
| 层次 | 放哪 | 测什么 |
|---|---|---|
| 单元测试 | backend/core 等 | 框架与工具类,可 Mock、可 H2 |
| 自动化测试 | autotest/ | 真实环境上的主线接口(登录、权限、后续定时任务等) |
原则很简单:核心流程优先,不做全站 CRUD 铺量。当前已覆盖登录与权限;定时任务等主线能力会按同样方式陆续补上。
何时重跑
下列变更后建议跑一遍 autotest:
- 认证、权限、会话等核心链路有改动
- 数据库结构或种子数据调整
- 本地单体 / 微服务等部署形态切换后做冒烟确认
- 合并前想确认「还能登录、权限还生效」
怎么跑
前置:本机 Redis、PostgreSQL(molandev_base)、已启动的 standalone-service(默认 http://127.0.0.1:9099),并安装 uv。
bash
cd autotest
cp .env.example .env # 按需改 BASE_URL / 账号 / DB / Redis
uv sync
uv run pytest更细的账号约定、演示模式注意、环境变量说明见仓库根目录 autotest/README.md。
演示模式
若 molandev.demo.enabled=true,增删改会被拦截,写测会自动 skip。跑全量用例前请关闭演示模式。
当前覆盖
| 方向 | 内容 |
|---|---|
| 登录 | 成功 / 错密 / 不存在 / 空参、禁用启用、登出、改密、错密锁定、会话 TTL、多端互踢、密码过期策略等 |
| 权限 | 未登录 / 无权限 / 有权限、角色菜单变更与 /sys/me/funcs 缓存刷新、menus·funcs 与绑定一致、角色挂用户不可删 |
| 字典 | 基础 list / CRUD(冒烟) |
请求鉴权头:Admin-Token。
约定(避免脏数据)
- 管理员:
.env里的ADMIN_ACCOUNT/ADMIN_PASSWORD,用于功能冒烟与造数 - 临时用户 / 角色:
autotest_u_*、autotest_r_*,用例结束删除 - 全局策略:登录策略、账户策略测前备份、测后还原
- 精细断言:锁定时间等查 PostgreSQL;token TTL 等查 Redis
后续计划
在登录、权限之外,继续补定时任务等其它核心主线,目标始终是:改完架构、库表或部署方式后,一键确认关键流程没断。