Files
Mutual_Fund/test_repo.py
T
2026-09-08 19:17:35 +08:00

44 lines
1.7 KiB
Python
Raw 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.
"""数据访问层自检: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())