`
из Motor.motor_asyncio импортировать AsyncIOMotorClient
из настроек импорта конфигурации
импортировать asyncio
Код: Выделить всё
class Mongo:
def __init__(self):
client = AsyncIOMotorClient(
host=settings.MONGO_HOST,
port=settings.MONGO_PORT,
username=settings.MONGO_USER,
password=settings.MONGO_PASS,
authSource=settings.MONGO_DB,
retryWrites=False
)
db = client[settings.MONGO_DB]
self.services_col = db["services"]
self.access_keys_col = db["access-keys"]
self.categories_col = db["categories"]
self.roles_col = db['roles']
self.collections = {
"services": self.services_col,
"access-keys": self.access_keys_col,
"categories": self.categories_col,
"roles": self.roles_col
}
async def create_indexes(self):
# Create indexes on the services collection
await self.services_col.create_index("name")
await self.services_col.create_index("dashboardPath")
# Create indexes on the categories collection
await self.categories_col.create_index("name")
await self.categories_col.create_index("dashboardPath")
mongo_instance = Mongo()`
Это conftest.py:
Код: Выделить всё
@pytest.yield_fixture(scope="session")
def event_loop(request):
"""Create an instance of the default event loop for each test
case."""
loop = asyncio.get_event_loop_policy().new_event_loop()
yield loop
loop.close()
Код: Выделить всё
import pytest
from httpx import AsyncClient
import pytest_asyncio
import asyncio
from tests.utils import *
@pytest.mark.asyncio
async def test_add_service(async_client):
await remove_entity('test_category', 'categories')
await remove_entity('test_service', 'services')
current_services = await count_entities('services')
Проблема в том, что я не знаю, как добавить индексы в экземпляр Mongo, поскольку добавление индекса требует ожидания, и если я жду, при этом в моем приложении я также закрою цикл событий в своих тестах, и даже без тестов мой API не работает в Swagger.
Спасибо
Я пробовал добавить ожидание для создания индексной функции или изменить конфигурацию, но не помогло
Подробнее здесь: https://stackoverflow.com/questions/785 ... sync-tests