commit 797471b096ff8766e30dc938777f69e30f675ea8 Author: admin Date: Thu Sep 17 21:17:14 2026 +0000 Загрузить файлы в «/» diff --git a/README.md b/README.md new file mode 100644 index 0000000..9039a72 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# Yandex Disk REST API Automation Tests + +Проект автоматизированного тестирования сервиса **Яндекс Диск** на базе **Python**, **pytest** и **requests**. + +Проект разработан в соответствии с техническим заданием и проверяет работу ключевых методов REST API: +- **PUT** — создание ресурса (папки) +- **GET** — чтение метаданных ресурса +- **POST** — публикация ресурса (получение публичной ссылки) +- **DELETE** — удаление ресурса (очистка диска) + +Также включены негативные сценарии (попытка создания дубликата, обращение к несуществующему ресурсу, невалидный токен). + +--- + +## 🛠 Стек технологий +- **Python 3.10+** +- **Pytest** — тестовый фреймворк, фикстуры, параметризация +- **Requests** — HTTP-клиент +- **Python-dotenv** — управление секретами и переменными окружения +- **GitHub Actions** — CI/CD пайплайн для автоматического прогона тестов + +--- + +## 📁 Структура проекта + +```text +yandex-disk-api-tests/ +├── .github/ +│ └── workflows/ +│ └── tests.yml # CI/CD пайплайн (GitHub Actions) +├── api/ +│ ├── __init__.py +│ └── disk_client.py # API-клиент (обёртка над requests с методами GET, POST, PUT, DELETE) +├── tests/ +│ ├── __init__.py +│ ├── conftest.py # Сессионные фикстуры и teardown временных ресурсов +│ └── test_disk_crud.py # Позитивные и негативные тестовые сценарии +├── .env.example # Шаблон переменных окружения +├── .gitignore # Исключения для git +├── pytest.ini # Конфигурация запуска Pytest +├── requirements.txt # Список зависимостей +└── README.md # Документация проекта +``` + +--- + +## 🔑 Подготовка и авторизация + +По условиям задания запрещено использовать личную учетную запись для получения OAuth-токена. + +1. Зарегистрируйте отдельный тестовый аккаунт на Яндексе или воспользуйтесь [Полигоном API Яндекс Диска](https://yandex.ru/dev/disk/poligon/). +2. Получите OAuth-токен с правами доступа к Яндекс Диску (`cloud_api:disk.read`, `cloud_api:disk.write` или полный доступ к Диску). +3. Скопируйте полученный токен. + +--- + +## 🚀 Локальный запуск + +### 1. Клонирование репозитория +```bash +git clone https://github.com//yandex-disk-api-tests.git +cd yandex-disk-api-tests +``` + +### 2. Создание и активация виртуального окружения +* **Linux / macOS:** + ```bash + python3 -m venv .venv + source .venv/bin/activate + ``` +* **Windows (PowerShell):** + ```powershell + python -m venv .venv + .venv\Scripts\Activate.ps1 + ``` + +### 3. Установка зависимостей +```bash +pip install --upgrade pip +pip install -r requirements.txt +``` + +### 4. Настройка переменных окружения +Создайте файл `.env` на основе примера `.env.example`: +```bash +cp .env.example .env +``` +Откройте файл `.env` и укажите ваш токен: +```ini +YANDEX_DISK_TOKEN=ваш_oauth_токен_здесь +``` + +### 5. Запуск тестов +* Запуск всех тестов с подробным выводом: + ```bash + pytest + ``` +* Запуск только CRUD-тестов: + ```bash + pytest -m crud + ``` +* Запуск только негативных тестов: + ```bash + pytest -m negative + ``` + +--- + +## ⚙️ Настройка CI/CD (GitHub Actions) + +В репозитории настроен автоматический запуск тестов при каждом пуше и Pull Request в ветки `main` / `master`. + +Чтобы тесты выполнялись в GitHub Actions: +1. Перейдите в ваш репозиторий на GitHub: **Settings** -> **Secrets and variables** -> **Actions**. +2. Нажмите кнопку **New repository secret**. +3. Добавьте секрет: + - **Name:** `YANDEX_DISK_TOKEN` + - **Value:** `<ваш_oauth_токен>` +4. После сохранения секрета тесты будут автоматически запускаться во вкладке **Actions**. diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..9599efe --- /dev/null +++ b/pytest.ini @@ -0,0 +1,9 @@ +[pytest] +testpaths = tests +python_files = test_*.py +python_classes = Test* +python_functions = test_* +addopts = -v -s --tb=short +markers = + crud: CRUD operations tests + negative: Negative tests diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..fa9c0e4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +pytest>=8.0.0 +requests>=2.31.0 +python-dotenv>=1.0.0 +allure-pytest>=2.13.0