23 lines
634 B
Python
23 lines
634 B
Python
# -*- coding: utf-8 -*-
|
||
"""共享夹具:临时 SQLite 数据库 + TestClient(auth 与 rbac 测试共用)。"""
|
||
from __future__ import annotations
|
||
|
||
import asyncio
|
||
|
||
import pytest
|
||
from fastapi.testclient import TestClient
|
||
|
||
from app.main import app
|
||
from app.infrastructure.repositories import Database
|
||
|
||
|
||
@pytest.fixture()
|
||
def client(tmp_path):
|
||
"""把 app.state.db 换成指向临时 SQLite 的 Database,保证测试隔离。"""
|
||
db = Database(db_url=f"sqlite+aiosqlite:///{tmp_path}/test.db")
|
||
asyncio.run(db.initialize())
|
||
app.state.db = db
|
||
with TestClient(app) as c:
|
||
yield c
|
||
asyncio.run(db.close())
|