import pytest
import pytest_asyncio
from motor.motor_asyncio import AsyncIOMotorClient
from odmantic import AIOEngine
import os
from typing import AsyncGenerator
from app.main import app
from app.db.database import get_database
from fastapi.testclient import TestClient
# Test database configuration
TEST_DATABASE_URL = os.getenv("TEST_DATABASE_URL", "mongodb://localhost:27017")
TEST_DATABASE_NAME = "test_db"
@pytest_asyncio.fixture(scope="session")
async def event_loop():
"""Create an instance of the default event loop for the test session."""
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
yield loop
loop.close()
@pytest_asyncio.fixture(scope="function")
async def test_engine() -> AsyncGenerator[AIOEngine, None]:
"""Create a test database engine and clean up after each test."""
client = AsyncIOMotorClient(TEST_DATABASE_URL)
engine = AIOEngine(client=client, database=TEST_DATABASE_NAME)
yield engine
try:
print(f"
await client.drop_database(TEST_DATABASE_NAME) #
Я пытаюсь настроить тестовые приложения для моего приложения Fastapi с использованием MongoDB (через мотор) и odmantic (aioEngine). Я сталкиваюсь с проблемой во время разрыва приспособления при попытке сбросить тестовую базу данных:
Ошибка Ошибка базы данных: этот цикл событий уже закрыт
Подробнее здесь: https://stackoverflow.com/questions/796 ... -event-loo