Files

36 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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},
}
}