FIXDOCKER и typehint в тестах
This commit is contained in:
@@ -21,7 +21,7 @@ async_session_maker = async_sessionmaker(
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def event_loop():
|
||||
try:
|
||||
loop = asyncio.get_event_loop()
|
||||
@@ -32,7 +32,7 @@ def event_loop():
|
||||
|
||||
|
||||
@pytest_asyncio.fixture(scope="function", autouse=True)
|
||||
async def db_init():
|
||||
async def db_init(event_loop):
|
||||
async with async_engine.begin() as conn:
|
||||
await conn.run_sync(Base.metadata.drop_all)
|
||||
await conn.run_sync(Base.metadata.create_all)
|
||||
@@ -47,7 +47,7 @@ async def get_test_session() -> AsyncGenerator[AsyncSession, None]:
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def app() -> Generator[FastAPI, None, None]:
|
||||
def app(event_loop) -> Generator[FastAPI, None, None]:
|
||||
app: FastAPI = create_app()
|
||||
app.dependency_overrides[get_async_session] = get_test_session
|
||||
yield app
|
||||
@@ -63,6 +63,6 @@ async def client(app) -> AsyncGenerator[AsyncClient, None]:
|
||||
|
||||
|
||||
@pytest_asyncio.fixture(scope="function")
|
||||
async def asession() -> AsyncGenerator[AsyncSession, None]:
|
||||
async def asession(event_loop) -> AsyncGenerator[AsyncSession, None]:
|
||||
async with async_session_maker() as session:
|
||||
yield session
|
||||
|
@@ -47,7 +47,11 @@ class TestBaseCrud:
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def get(ac: AsyncClient, menu: dict, submenu: dict) -> Tuple[int, dict]:
|
||||
async def get(
|
||||
ac: AsyncClient,
|
||||
menu: dict,
|
||||
submenu: dict,
|
||||
) -> Tuple[int, dict]:
|
||||
"""Получение меню по id"""
|
||||
response: Response = await ac.get(
|
||||
f"/{menu.get('id')}/submenus/{submenu.get('id')}",
|
||||
@@ -55,7 +59,11 @@ class TestBaseCrud:
|
||||
return response.status_code, response.json()
|
||||
|
||||
@staticmethod
|
||||
async def write(ac: AsyncClient, menu: dict, submenu: dict) -> Tuple[int, dict]:
|
||||
async def write(
|
||||
ac: AsyncClient,
|
||||
menu: dict,
|
||||
submenu: dict,
|
||||
) -> Tuple[int, dict]:
|
||||
"""создания меню"""
|
||||
response: Response = await ac.post(
|
||||
f"/{menu.get('id')}/submenus/",
|
||||
|
@@ -48,7 +48,7 @@ async def test_menu(asession: AsyncSession) -> None:
|
||||
async def test_submenu(asession: AsyncSession) -> None:
|
||||
async with asession:
|
||||
# Создаем меню напрямую
|
||||
menu: Menu = Menu(title="SomeMenu", description="SomeDescription")
|
||||
menu = Menu(title="SomeMenu", description="SomeDescription")
|
||||
asession.add(menu)
|
||||
await asession.commit()
|
||||
await asession.refresh(menu)
|
||||
@@ -69,14 +69,18 @@ async def test_submenu(asession: AsyncSession) -> None:
|
||||
|
||||
# Проверяем подменю
|
||||
req_submenu = await SubMenuCrud.get_submenu_item(
|
||||
menu_id, submenu.id, asession,
|
||||
menu_id,
|
||||
submenu.id,
|
||||
asession,
|
||||
)
|
||||
assert submenu == req_submenu
|
||||
|
||||
# Обновляем меню
|
||||
submenu.title = "UpdatedSubmenu"
|
||||
req_submenu = await SubMenuCrud.update_submenu_item(
|
||||
submenu_id, menubaseschema.model_validate(submenu), asession,
|
||||
submenu_id,
|
||||
menubaseschema.model_validate(submenu),
|
||||
asession,
|
||||
)
|
||||
assert submenu == req_submenu.scalar_one_or_none()
|
||||
|
||||
|
Reference in New Issue
Block a user