- 门禁: 本地 pre-push 钩子(.git/hooks,推送前强制跑全量 pytest) - Docker: 新增 test 镜像阶段(含 dev 依赖与 tests),compose 提供 --profile test run --rm test 入口;dev.sh 支持 ./dev.sh test - 测试基建: 根目录 conftest.py 统一 DATABASE_URL/APP_ENCRYPTION_KEY, 移除 9 个测试文件内的重复 setdefault(含多余 import os) - 迁移冒烟: tests/test_migrations.py 校验链线性、脚本可编译、空库整链 upgrade head 后与 Base.metadata 表/列/索引对齐 - 修复冒烟测试发现的漂移: YybRechargeTask.task_id 冗余 index=True (唯一索引已覆盖,迁移链未建普通索引,模型与真实 schema 对齐) - alembic.ini: path_separator=os 消除弃用告警;README 补测试章节
12 lines
603 B
Python
12 lines
603 B
Python
"""pytest 全局引导:在导入任何应用模块前固定测试数据库与加密密钥。
|
|
|
|
web/backend 的模块在 import 阶段就会读取 DATABASE_URL 创建全局引擎、
|
|
读取 APP_ENCRYPTION_KEY 初始化敏感字段加密,因此这两个环境变量必须在
|
|
测试模块加载之前设置好。各测试文件自身使用独立的 SQLite 内存引擎做
|
|
数据隔离,这里统一兜底,避免误连开发/生产数据库。
|
|
"""
|
|
|
|
import os
|
|
|
|
os.environ.setdefault("DATABASE_URL", "sqlite://")
|
|
os.environ.setdefault("APP_ENCRYPTION_KEY", "MDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWY=") |