Пример фреймворка для автоматизации тестирования на Python


Инструменты

  • Pytest - тестовый фреймворк для создания тестов и их запуска
  • Selenium - инструмент для автоматизации действий веб-браузера
  • Selenoid - легковесный аналог Selenium Hub написанный на Golang.Позволяет запускать тесты внутри Docker контейнеров.
  • Allure Report - Система отчетности (Тест репорт система)
  • Docker - программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Описание структуры проекта

  • config - Каталог для конфигурационных файлов.В нем находится browsers.json который содержит описание браузеров и их версий для работы с Selenoid.
  • core - Каталог для хранения объектов,классов и т.д. которые используются как слой инициализации для WebDriver.
  • helpers - Методы для взаимодействия с браузером через протокол WebDriver .
  • page - Слой описания page элементов и page object.
  • tests - Слой описания бизнес логики сценариев и их проверки.
  • utils - Каталог для хранения вспомогательных утилит

Способы запуска автотестов


Способ №1. Запуск автотестов внутри контейнера.

  1. Запускаем shell скрипт sh up.sh. Это запустит все необходимые контейнеры для работы и создаcт shell скрипт,в котором описаны команды для загрузки образов Selenoid с готовыми браузерами.

Selenoid-UI станет доступен по адресу http://localhost:8080/#/

Allure Report UI доступен по адресу http://localhost:5252/allure-docker-service-ui/projects/default

  1. Скрипт автоматически скачает необходимые image с браузерами, которые будут использоваться для создания контейнеров.Скрипт собирает default версии браузеров, указанных в config/browsers.json
  2. Вводим в консоль команду docker exec -it ui-autotests <ваша_команда>,где вместо <ваша команда> подставляем неообходимую команду для тест-комплекта. Как пример: docker exec -it ui-autotests pytest На http://localhost:8080/#/ вы сможете увидеть запущенные контейнеры с браузерами, в которых запущены тестовые сценарии

Посмотреть что происходит в контейнере можно, нажав на его идентификатор

4. После прогона автотестов, результаты можно посмотреть по адресу http://localhost:5252/allure-docker-service-ui/projects/default/ либо получить последний отчет - http://localhost:5252/allure-docker-service-ui/projects/default/reports/latest

Способ №2. Запуск автотестов локально

  1. Устанавливаем локально Python. Подробнее на https://www.python.org/downloads/
  2. В папке проекта запускаем команду python -m pip install --upgrade pip для обновления pip
  3. В папке проекта запуска команду pip3 install -r requirements.txt для установки зависимостей
  4. Загружаем образ с браузером. Допустим docker pull selenoid/chrome:106.0
  5. Вводим команду для запуска автотестов. Допустим python pytest
  6. После прогона автотестов, результаты можно посмотреть по адресу http://localhost:5252/allure-docker-service-ui/

Опции

  • В файле pytest.ini прописаны доп.опции.
    • pytest-xdist и его параметр -n X, где X - количество запущенных тестов одновременно, параллельно друг другу.