Основная задача — обеспечить автоматизированное тестирование функциональности API для ресурса Posts на сайте JSONPlaceholder. Проект включает следующие задачи:
- Проверка ключевых CRUD операций (Create, Read, Update, Delete) для ресурса Posts.
- Проверка корректности ответов сервера (статус-коды, структура JSON, наличие обязательных полей).
- Обеспечение независимости тестов и их легкости в поддержке.
Проект включает набор автоматизированных тестов, написанных с использованием фреймворков Pytest, Allure, Requests и jsonschema. Тесты проверяют основные функциональные возможности API для ресурса Posts, такие, как:
- Создание поста (Create): Проверка возможности создания нового поста с корректными данными.
- Получение поста (Read): Тестирование получения списка всех постов и конкретного поста по его ID.
- Обновление поста (Update): Проверка полного (PUT) и частичного (PATCH) обновления данных поста.
- Удаление поста (Delete): Тестирование удаления поста по его ID и проверка, что пост больше недоступен.
Тестирование осуществляется с использованием библиотеки Requests для выполнения HTTP-запросов и jsonschema для валидации структуры и типов данных в ответах API. Для формирования отчетов о тестировании используется Allure, что позволяет детально анализировать результаты выполнения тестов.
Процесс тестирования включает:
- Проверку корректности статус-кодов ответов сервера.
- Валидацию структуры JSON-ответов на соответствие заданным схемам.
- Логирование всех запросов и ответов для упрощения отладки.
Результаты тестирования собираются и формируются в виде отчетов с помощью Allure, что обеспечивает удобный анализ покрытия тестами и выявленных проблем. Отчеты могут быть интегрированы в CI/CD-системы для автоматического запуска тестов при каждом изменении кода.
Инструмент | Описание |
---|---|
Pytest | Фреймворк для написания и запуска тестов. Он предоставляет удобный синтаксис и разнообразные возможности для тестирования. |
Allure | Инструмент для создания отчетов о тестировании с поддержкой различных языков. |
Requests | Библиотека для выполнения HTTP-запросов к API. |
jsonschema | Библиотека для валидации JSON-ответов на соответствие заданным схемам. |
Установка
Для начала работы, клонируйте репозиторий и перейдите в директорию проекта:
git clone https://github.com/yarskii/avaclinic.git # Клонируем репозиторий
cd avaclinic # Переходим в папку проекта
python -m venv venv
source venv/bin/activate # Для Linux/macOS
.\venv\Scripts\activate # Для Windows
Установка необходимых библиотек для работы проекта: Команды:
pip install -r requirements.txt # Устанавливаем зависимости из файла requirements.txt
Запуск тестов
Чтобы запустить все тесты, выполните команду:
pytest tests
Для запуска конкретного теста, используйте следующую команду:
pytest tests/api/test_posts_api.py
Вы можете использовать различные параметры для управления поведением тестов:
-s
: Выводить все выводы в консоль.-v
: Детализированное логирование.--alluredir=allure-results
: Сохранять результаты тестов для генерации отчетов Allure.
Пример команды:
pytest --alluredir=allure-results
Генерация отчетов Allure
Следуйте инструкциям на официальном сайте Allure для установки Allure Commandline.
После выполнения тестов с параметром --alluredir
, вы можете сгенерировать отчет следующей командой:
allure serve allure-results
Запуск проекта в Jenkins
- Откройте проект
- Выберите
Build with parameters
- Измените параметры, если требуется:
- COMMENT: Комментарий к сборке (например, номер задачи или описание изменений).
- TESTS_FOLDER: Выберите набор тестов (
tests
,tests/api
,tests/web
) - BROWSER_VERSION: Версия браузера (
99
,100
,113
,114
,120
,121
,122
,123
,124
,125
,126
).
- Нажмите
Build
- После сборки, результат работы можно увидеть в
Allure Report
Интеграция с Allure TestOps
В проекте используется система управления тестированием Allure TestOps для централизованного мониторинга, анализа и управления тестами.
- Мониторинг покрытия тестами: Allure TestOps позволяет отслеживать, какие части продукта покрыты автоматизированными тестами, а также анализировать эффективность тестирования.
- Интеграция с CI/CD: Система интегрируется с Jenkins, что обеспечивает автоматическую загрузку результатов тестирования после каждого запуска.
- Связь с задачами Jira: Каждый тест может быть связан с задачей в Jira, что помогает отслеживать статус исправления дефектов и планировать работу над ними.
- Генерация детальных отчетов: Allure TestOps предоставляет расширенные возможности для создания отчетов о тестировании, включая графики, диаграммы и статистику.
Эти изображения демонстрируют интеграцию проекта с Allure TestOps для управления тестами, анализа покрытия и мониторинга результатов.
Интеграция с Jira
В проекте используется система управления задачами Jira для отслеживания дефектов, планирования тестирования и координации работы между командами разработки и тестирования.
- Регистрация дефектов: Все выявленные проблемы во время автоматизированного тестирования автоматически или вручную регистрируются как задачи в Jira.
- Связь с тест-кейсами: Каждый тестовый сценарий может быть связан с задачей в Jira, что позволяет легко отслеживать статус тестирования конкретной функциональности.
- Отчетность: Интеграция с Allure TestOps обеспечивает возможность генерации отчетов, которые включают ссылки на задачи Jira, связанные с тестами.
Скриншот показывает, как дефекты и задачи, выявленные в ходе тестирования, регистрируются и отслеживаются в системе
Jira.
Этот скриншот демонстрирует интерфейс Jenkins, где можно запускать тесты с различными параметрами и просматривать их статус.
Здесь представлен общий отчет Allure, который содержит сводную информацию о результатах выполнения тестов: количество пройденных, упавших и пропущенных тестов.
На этом скриншоте показан детальный отчет о конкретном тесте, включая шаги выполнения, логи и прикрепленные скриншоты.
Пример автоматического уведомления в Telegram о результате выполнения тестов. Это позволяет оперативно реагировать на любые проблемы.
Этот проект лицензирован под MIT License. Подробности смотрите в файле LICENSE.
Если у вас есть вопросы или предложения, пожалуйста, создайте issue на GitHub или свяжитесь со мной напрямую.
Автор: Ярослав Гусев