fix: use module scope for E2E fixtures

This commit is contained in:
root 2026-03-29 23:44:06 +00:00
parent 3fbf12163a
commit e619dc9368

View File

@ -4,6 +4,7 @@ E2E тесты для Kwork API.
Требуют реальных credentials и запускаются только локально.
"""
import asyncio
import os
from pathlib import Path
@ -15,6 +16,9 @@ from kwork_api import KworkClient
# Загружаем .env
load_dotenv(Path(__file__).parent / ".env")
# Отключаем auto mode для pytest-asyncio чтобы использовать один event loop
pytest_plugins = ('pytest_asyncio',)
@pytest.fixture(scope="session")
def kwork_credentials():
@ -36,35 +40,31 @@ def require_credentials(kwork_credentials):
return kwork_credentials
@pytest.fixture(scope="session")
@pytest.fixture(scope="module")
def client(require_credentials):
"""
E2E клиент для всех тестов.
E2E клиент для всех тестов в модуле.
Авторизуется один раз и переиспользуется во всех тестах сессии.
Авторизуется один раз и переиспользуется во всех тестах модуля.
"""
import asyncio
async def login():
async def create_client():
return await KworkClient.login(
username=require_credentials["username"],
password=require_credentials["password"],
)
client = asyncio.run(login())
client = asyncio.run(create_client())
yield client
asyncio.run(client.close())
@pytest.fixture(scope="session")
@pytest.fixture(scope="module")
def catalog_kwork_id(client):
"""
Получить ID первого кворка из каталога для тестов.
Переиспользуется во всех тестах сессии.
Переиспользуется во всех тестах модуля.
"""
import asyncio
async def get_first_kwork():
catalog = await client.catalog.get_list(page=1)
if len(catalog.kworks) > 0: