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