""" Конфигурационный файл 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)