Files
fastapi-best-architecture/backend/app/tests/utils/db_mysql.py
T
dylan 06a0a33a3a Update tests structure. (#68)
* Update tests structure.
* Unit tests use the test database
* Add function for creating database engine and session.
2023-05-23 17:52:34 +08:00

43 lines
1.0 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sqlalchemy.ext.asyncio import AsyncSession
from backend.app.core.conf import settings
from backend.app.database.base_class import MappedBase
from backend.app.database.db_mysql import create_engine_and_session
TEST_DB_DATABASE = settings.DB_DATABASE + '_test'
SQLALCHEMY_DATABASE_URL = (
f'mysql+asyncmy://{settings.DB_USER}:{settings.DB_PASSWORD}@{settings.DB_HOST}:'
f'{settings.DB_PORT}/{TEST_DB_DATABASE}?charset={settings.DB_CHARSET}'
)
async_engine, async_db_session = create_engine_and_session(SQLALCHEMY_DATABASE_URL)
async def override_get_db() -> AsyncSession:
"""
session 生成器
:return:
"""
session = async_db_session()
try:
yield session
except Exception as se:
await session.rollback()
raise se
finally:
await session.close()
async def create_table():
"""
创建数据库表
"""
async with async_engine.begin() as coon:
await coon.run_sync(MappedBase.metadata.create_all)