Объект NoneType не имеет атрибута get_collection, FastAPI + Mongodb

Я провожу тест с FastAPI о регистрации одного пользователя в приложении. Пока приложение работает, я могу отлично зарегистрировать пользователя, но когда я пытаюсь провести тест с помощью pytest о том же методе, у меня возникают проблемы, он не распознает get_collection

это метод теста

      import pytest
from httpx import AsyncClient
from fastapi import status
from fastapi_project.main import app

@pytest.mark.asyncio
async def test_successful_user_create():
async with AsyncClient(app=app) as ac:
    body = {            
        'username': 'test', 
        'email': 'test@test.com', 
        'hashed_password': 'password_test'            
    }
    res = await ac.post("http://127.0.0.1:8000/register", data=body)
assert res.status_code == status.HTTP_201_CREATED

это ошибка

Мой метод регистрации

      @router.post("/register")
async def register(
    username: str = Form(..., max_length=50),
    email: EmailStr = Form(...),
    hashed_password: str = Form(..., max_length=50)
):
form_dict = {'username': username, 'email': email, 'hashed_password': hashed_password, 
'scope': ['client'], 'enable': False, 'token': secrets.token_urlsafe(16), 'comments': []}

created_user = await auth_db.create_user(form_dict)

if created_user:
    return JSONResponse(status_code=status.HTTP_201_CREATED,
                        content='user is created correctly and check the email')
else:
    return JSONResponse(status_code=status.HTTP_409_CONFLICT,
                        content='user is not created correctly')

create_user метод

      async def create_user(self, form_data: dict):
            
users_collection = db.appDB.get_collection('users')
x = await users_collection.insert_one(form_data)
if x:
   return x

и конфигурация mongodb

      from motor.motor_asyncio import AsyncIOMotorClient

class DataBase:
client: AsyncIOMotorClient = None
appDB = None

db = DataBase()

async def connect_to_mongo():
   db.client = AsyncIOMotorClient(URL)
   db.appDB = db.client.app  # database name

async def close_mongo_connection():
   db.client.close()

И эти 2 метода были добавлены в main.py

      app.add_event_handler("startup", connect_to_mongo)
app.add_event_handler("shutdown", close_mongo_connection)

0 ответов

Другие вопросы по тегам