"""PostgreSQL 测试环境(用于并发/行锁验证)。 **为什么需要**:SQLite 用数据库级写锁,多线程并发会直接报 `database table is locked`, 无法验证"并发下不超卖"这类核心不变量。生产环境是 PostgreSQL(行级锁), 因此并发用例必须在 PG 上跑才有意义。 用法: # 一次性准备(本机 PG,默认 5433 端口;见 scripts/setup_pg.py) python scripts/setup_pg.py # 跑全部测试(含并发) DJANGO_SETTINGS_MODULE=config.settings.pgtest python -m pytest tests/ -p no:cacheprovider # 只跑并发用例 DJANGO_SETTINGS_MODULE=config.settings.pgtest python -m pytest tests/test_concurrency.py -p no:cacheprovider -m postgres 环境变量可覆盖:PG_TEST_DB / PG_USER / PG_PASSWORD / PG_HOST / PG_PORT """ from .base import env # noqa: F401 from .test import * # noqa: F401,F403 继承测试配置(迁移禁用、密码哈希加速) DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql", "NAME": env("PG_TEST_DB", default="dealerhub_test"), "USER": env("PG_USER", default="postgres"), "PASSWORD": env("PG_PASSWORD", default="postgres"), "HOST": env("PG_HOST", default="127.0.0.1"), "PORT": env("PG_PORT", default="5433"), # 并发测试需要每个线程独立的持久连接(连接复用会串事务) "CONN_MAX_AGE": 0, "OPTIONS": {"connect_timeout": 5}, } }