57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
"""
|
|||
|
|
Конфигурационный файл Pytest с фикстурами для инициализации клиента и тестовых данных.
|
||
|
|
"""
|
||
|
|
|
||
|
|
import os
|
||
|
|
import uuid
|
||
|
|
import pytest
|
||
|
|
from dotenv import load_dotenv
|
||
|
|
|
||
|
|
from api.disk_client import YandexDiskClient
|
||
|
|
|
||
|
|
# Загрузка переменных окружения из .env файла
|
||
|
|
load_dotenv()
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="session")
|
||
|
|
def auth_token() -> str:
|
||
|
|
"""
|
||
|
|
Фикстура получения токена авторизации.
|
||
|
|
Проверяет наличие токена в переменных окружения. Если токен не задан,
|
||
|
|
тесты пропускаются с информативным сообщением.
|
||
|
|
"""
|
||
|
|
token = os.getenv("YANDEX_DISK_TOKEN")
|
||
|
|
if not token or token.strip() == "":
|
||
|
|
pytest.skip(
|
||
|
|
"YANDEX_DISK_TOKEN не найден в переменных окружения. "
|
||
|
|
"Задайте его в .env файле или через export YANDEX_DISK_TOKEN=..."
|
||
|
|
)
|
||
|
|
return token.strip()
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="session")
|
||
|
|
def disk_client(auth_token: str) -> YandexDiskClient:
|
||
|
|
"""
|
||
|
|
Фикстура создания экземпляра API-клиента на всю тестовую сессию.
|
||
|
|
"""
|
||
|
|
return YandexDiskClient(token=auth_token)
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture(scope="function")
|
||
|
|
def temp_folder(disk_client: YandexDiskClient):
|
||
|
|
"""
|
||
|
|
Фикстура создания изолированной временной папки для теста.
|
||
|
|
Гарантирует удаление созданной папки после завершения теста (Teardown).
|
||
|
|
"""
|
||
|
|
unique_suffix = uuid.uuid4().hex[:8]
|
||
|
|
folder_path = f"pytest_temp_{unique_suffix}"
|
||
|
|
|
||
|
|
# Setup: создаем папку
|
||
|
|
create_resp = disk_client.create_folder(folder_path)
|
||
|
|
assert create_resp.status_code == 201, f"Не удалось подготовить фикстуру папки: {create_resp.text}"
|
||
|
|
|
||
|
|
# Передаем управление в тест
|
||
|
|
yield folder_path
|
||
|
|
|
||
|
|
# Teardown: удаляем папку навсегда (мимо корзины)
|
||
|
|
disk_client.delete_resource(folder_path, permanently=True)
|