"""全局测试配置。 - 强制 SQLite 临时文件数据库:默认库已是 MySQL(config.yaml database.mysql), 测试绝不允许触碰开发 MySQL(qlib@192.168.1.10);该 env 在 app 模块 首次导入前生效,SessionLocal/engine 会按它构造。 - JOB_MODE=local:单测/CI 里 Job 在本进程执行(不 spawn 子进程、不依赖安装态) - QLIB_SKIP_STALE_JOB_CLEANUP=1:TestClient 启动 lifespan 不清理残留 Job 必须在任何 app / config 模块首次导入前生效,故放在 conftest 模块顶层。 """ from __future__ import annotations import os # 测试数据库:每进程唯一 /tmp sqlite 文件(隔离、不落项目目录、不触 MySQL) _TEST_DB = f"/tmp/qlib-pytest-{os.getpid()}.db" os.environ["DATABASE_URL"] = f"sqlite:///{_TEST_DB}" # 强制(不是 setdefault):测试绝不 spawn 研究子进程 / 不触碰开发库 os.environ["JOB_MODE"] = "local" os.environ["QLIB_SKIP_STALE_JOB_CLEANUP"] = "1"