Files

58 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)