Files
Mutual_Fund/test_repo.py
T

44 lines
1.7 KiB
Python
Raw Normal View History

2026-09-08 19:17:35 +08:00
"""数据访问层自检:MySQL 可达且表已建则跑真实 CRUD;否则 SKIP(exit 0)。"""
import asyncio
from sqlalchemy import text
from config.database.mysql import get_engine, get_session_factory
from repositories.sys_config import SysConfigRepo
async def _db_ok() -> bool:
"""MySQL 可达且 sys_config 表已建(schema.sql 已导入)才算就绪。"""
try:
async with get_engine().connect() as conn:
await conn.execute(text("SELECT 1"))
async with get_session_factory()() as session:
await session.execute(text("SELECT 1 FROM sys_config LIMIT 1"))
return True
except Exception:
return False
async def main():
try:
if not await _db_ok():
print("SKIP: MySQL 不可达或 sys_config 未建表,CRUD 检查延后(先启动 MySQL 并导入 sql/schema.sql)")
return
async with get_session_factory()() as session:
repo = SysConfigRepo(session)
row = await repo.set_value("test.hnw", "3000000", "自检")
assert row.config_key == "test.hnw"
assert await repo.get_value("test.hnw") == "3000000"
assert await repo.count() > 0
rows = await repo.list(where=(repo.model.config_key == "test.hnw",))
assert len(rows) == 1
assert await repo.delete(rows[0].id)
assert await repo.get_value("test.hnw") is None # 幂等清理
print("REPO TESTS PASSED")
finally:
import config.database as _db
await _db.dispose() # 干净收尾,避免连接在事件循环关闭后被 GC
if __name__ == "__main__":
asyncio.run(main())