签入版本
This commit is contained in:
@@ -38,3 +38,35 @@ def flask_app():
|
||||
app.config['SECRET_KEY'] = 'test-secret-key'
|
||||
app.config['WTF_CSRF_ENABLED'] = False
|
||||
return app
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def app():
|
||||
"""
|
||||
sqlite 内存库应用实例:供 Repository 单测使用。
|
||||
|
||||
- StaticPool 保证所有连接共享同一内存库(多线程/多次 init 下数据一致)
|
||||
- 每测试独立建表/drop(query.update / bulk_insert 与 identity map 冲突,
|
||||
不宜采用事务回滚隔离)
|
||||
- 测试内数据构造需显式 db.session.commit()
|
||||
"""
|
||||
from sqlalchemy.pool import StaticPool
|
||||
|
||||
from src.core.database import db
|
||||
import src.models_registry # noqa: F401 (注册全部表)
|
||||
|
||||
flask_app = Flask(__name__)
|
||||
flask_app.config.update(
|
||||
TESTING=True,
|
||||
SECRET_KEY='test-secret-key',
|
||||
WTF_CSRF_ENABLED=False,
|
||||
SQLALCHEMY_DATABASE_URI='sqlite://',
|
||||
SQLALCHEMY_TRACK_MODIFICATIONS=False,
|
||||
SQLALCHEMY_ENGINE_OPTIONS={'poolclass': StaticPool},
|
||||
)
|
||||
db.init_app(flask_app)
|
||||
with flask_app.app_context():
|
||||
db.create_all()
|
||||
yield flask_app
|
||||
db.session.remove()
|
||||
db.drop_all()
|
||||
|
||||
Reference in New Issue
Block a user