baseline: 批次A-D 成果 + membership 半成品(测试红)

This commit is contained in:
agent
2026-09-11 23:11:35 +08:00
commit b3f3095d53
311 changed files with 40540 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
"""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},
}
}