Загрузить файлы в «/»
This commit is contained in:
commit
797471b096
3 files changed
+132
No files matched your search
@@ -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/<your-username>/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**.
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
pytest>=8.0.0
|
||||||
|
requests>=2.31.0
|
||||||
|
python-dotenv>=1.0.0
|
||||||
|
allure-pytest>=2.13.0
|
||||||
Reference in new issue
Block a user