Руководство по запуску автоматизации с Appium и Pytest

edcd6d22c78da33f6dad6e056801028f.png

Введение

В современном мире разработки мобильных приложений автоматизированное тестирование становится неотъемлемой частью процесса обеспечения качества продукта. В этом руководстве мы рассмотрим, как создать эффективную систему автоматизации тестирования с использованием двух мощных инструментов: Appium и Pytest.

Почему Appium?

Appium — это открытый и мощный инструмент для автоматизации тестирования мобильных приложений на различных платформах, включая Android и iOS. Он обеспечивает единый API для взаимодействия с различными устройствами и платформами, что делает его идеальным выбором для тестировщиков, сталкивающихся с разнообразием устройств и операционных систем.

Почему Pytest?

Pytest — это фреймворк для написания и запуска тестов на языке программирования Python. Его простой синтаксис и богатый функционал делают его предпочтительным выбором для автоматизации тестирования. Pytest легко интегрируется с различными инструментами и обеспечивает чистый, удобный код для организации тестовых сценариев.

Цель руководства

Цель этого руководства — предоставить подробный шаг за шагом план для настройки автоматизации тестирования мобильных приложений с использованием Appium и Pytest. Мы рассмотрим процесс установки необходимых инструментов, создания структуры проекта, написания тестов и их последующего запуска.

Будем следовать этапам сначала до конечной реализации, давая вам не только технические инструкции, но и контекст и понимание лучших практик в области автоматизации тестирования.

Присоединитесь к нам в этом захватывающем путеводителе по миру автоматизации тестирования мобильных приложений с использованием Appium и Pytest!

Шаг 1: Подготовка окружения

Перед тем как начать автоматизацию тестирования с Appium и Pytest, необходимо создать подготовленное и стабильное окружение. В этом шаге мы рассмотрим установку необходимых зависимостей.

1.1 Установка Python и необходимых зависимостей

Установка Python

  1. Посетите официальный сайт Python и загрузите последнюю версию Python для вашей операционной системы.

  2. Запустите установочный файл Python и следуйте инструкциям по установке.

Установка необходимых библиотек

Откройте терминал или командную строку и выполните следующую команду для установки библиотек Appium и Pytest:

pip install Appium-Python-Client pytest

1.2 Установка Node.js и Appium

Установка Node.js

  1. Посетите официальный сайт Node.js и загрузите последнюю версию Node.js.

  2. Запустите установочный файл Node.js и следуйте инструкциям по установке.

Установка Appium

  1. После установки Node.js, откройте терминал или командную строку и выполните следующую команду для установки Appium:

npm install -g appium

Эта команда установит Appium глобально на вашем компьютере.

  1. Запустите Appium Server, введя следующую команду:

appium

Appium Server должен успешно запуститься, и вы увидите вывод в терминале, указывающий на успешный запуск сервера.

Теперь ваше окружение подготовлено к автоматизации тестирования мобильных приложений с использованием Appium и Pytest. Переходите ко второму шагу для создания структуры проекта.

Шаг 2: Настройка проекта

Теперь, когда у нас подготовлено окружение, перейдем к созданию структуры проекта для автоматизации тестирования мобильных приложений с использованием Appium и Pytest.

2.1 Создание структуры проекта

Создайте основную директорию для вашего проекта и перейдите в нее в терминале:

mkdir project_directory
cd project_directory

Внутри этой директории создайте следующую структуру:

project_directory/
│
├── tests/
│   ├── test_example.py
│
├── app/
│   └── your_app.apk (или .ipa для iOS)
│
└── utils/
    ├── appium_utils.py
    └── ...
  • tests/: Эта директория будет содержать ваши тестовые сценарии, написанные с использованием Pytest.

  • app/: Здесь хранится ваше тестируемое приложение. Разместите файл .apk (для Android) или .ipa (для iOS) в этой директории.

  • utils/: Создайте директорию для утилит, в частности, appium_utils.py, который мы будем использовать для настройки Appium.

2.2 Размещение тестируемого приложения

Скачайте или скопируйте ваше тестируемое приложение (.apk для Android или .ipa для iOS) в директорию app/.

Теперь, с установленной структурой проекта, мы можем переходить к следующему шагу — настройке Appium в тестах.

Шаг 3: Настройка Appium

Теперь давайте настроим Appium в наших тестах. Мы создадим утилиту appium_utils.py, которая будет использоваться для инициализации Appium драйвера.

3.1 Создание файла appium_utils.py

Внутри директории utils/ создайте файл appium_utils.py с помощью вашего любимого текстового редактора. В этом файле мы определим функцию для инициализации Appium драйвера.

# utils/appium_utils.py
from appium import webdriver

def initialize_appium_driver():
    desired_caps = {
        'platformName': 'Android',  # или 'iOS'
        'platformVersion': 'ваша_версия_платформы',
        'deviceName': 'ваше_устройство',
        'app': 'путь_к_вашему_приложению.apk',  # или .ipa для iOS
    }

    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    return driver

Замените параметры platformVersion, deviceName и app на соответствующие значения для вашего тестового окружения.

Эта функция будет создавать и возвращать экземпляр Appium драйвера с заданными параметрами.

Теперь, когда у нас есть настроенный Appium, мы можем перейти к написанию тестов в следующем шаге.

Шаг 4: Написание тестов с использованием Pytest

Теперь мы создадим простой тестовый сценарий, используя Pytest и Appium. Давайте создадим файл test_example.py в директории tests/.

4.1 Создание файла test_example.py

# tests/test_example.py
from utils.appium_utils import initialize_appium_driver
import pytest

@pytest.fixture(scope="function")
def appium_driver(request):
    driver = initialize_appium_driver()

    def fin():
        driver.quit()

    request.addfinalizer(fin)
    return driver

def test_example(appium_driver):
    # Ваш код теста с использованием appium_driver
    # Например:
    element = appium_driver.find_element_by_id("com.example.app:id/button")
    element.click()
    assert "Success" in appium_driver.page_source

4.2 Использование Pytest-фикстур для инициализации и завершения

  • initialize_appium_driver: Эта функция инициализирует Appium драйвер и возвращает его. Она используется в Pytest-фикстуре для создания драйвера перед выполнением теста и его завершения после теста.

  • appium_driver фикстура: Эта фикстура создает и предоставляет экземпляр Appium драйвера для каждого теста. После выполнения теста драйвер завершается.

  • test_example тест: Пример простого тестового сценария. Здесь мы находим элемент на экране по его идентификатору (ID) и выполняем клик. Затем мы проверяем, содержится ли строка «Success» на странице.

Теперь у нас есть простой тест, который использует Appium и Pytest для автоматизации мобильного приложения. Перейдем к следующему шагу — запуску тестов.

Шаг 5: Запуск тестов с использованием Pytest

Теперь, когда у нас есть написанные тесты, давайте научимся запускать их с использованием Pytest.

5.1 Запуск тестов в терминале

Откройте терминал и перейдите в корневую директорию вашего проекта. Затем выполните следующую команду:

pytest tests/

Эта команда запустит все тесты в директории tests/. Pytest автоматически обнаружит тесты, основанные на их именах файлов и функций, и выполнит их последовательно.

5.2 Проверка результатов выполнения тестов

После завершения тестов, Pytest выдаст подробный отчет в терминале, включая количество пройденных, неудачных и пропущенных тестов. Вы также увидите любые сообщения об ошибках или причины неудачных тестов.

Дополнительные шаги (по желанию):

5.3 Использование опций Pytest

  • Запуск отдельного теста: Вы можете запустить отдельный тест, указав его имя:

    pytest tests/test_example.py::test_example
  • Генерация отчета JUnit XML: Если вам нужны результаты в формате JUnit XML для интеграции с CI/CD, используйте опцию --junitxml:

    pytest tests/ --junitxml=result.xml

Это основные шаги для запуска тестов с использованием Pytest. Обязательно изучите дополнительные возможности Pytest для лучшего понимания и более эффективного использования ваших автоматизированных тестов.

Теперь у вас есть полностью настроенная система автоматизации тестирования мобильных приложений с Appium и Pytest. Переходите к следующему шагу, чтобы узнать о дополнительных возможностях и лучших практиках.

Дополнительные шаги (по желанию):

После базовой настройки автоматизации тестирования с Appium и Pytest, рассмотрим дополнительные шаги для улучшения функциональности и управления процессом тестирования.

6.1 Интеграция с системами сборки (например, Jenkins)

Для автоматического запуска тестов после каждого нового коммита или изменения в репозитории можно интегрировать ваш проект с системой сборки, такой как Jenkins.

  1. Установите Jenkins, следуя официальной документации.

  2. Создайте новый проект Jenkins и настройте его для отслеживания изменений в вашем репозитории.

  3. В настройках проекта добавьте сценарий для запуска тестов:

    cd /path/to/your/project
    pytest tests/

Теперь Jenkins будет автоматически запускать ваши тесты после каждого обновления кода.

6.2 Применение шаблона Page Object для улучшения читаемости и обслуживаемости кода

Шаблон Page Object позволяет абстрагировать логику взаимодействия с элементами на экране в отдельные классы. Это улучшит читаемость и обслуживаемость кода, особенно при масштабировании проекта.

  1. Создайте класс в директории utils/, представляющий страницу вашего приложения. Например:

    # utils/home_page.py
    class HomePage:
        def __init__(self, driver):
            self.driver = driver
    
        def click_button(self):
            button = self.driver.find_element_by_id("com.example.app:id/button")
            button.click()
    
  2. В вашем тестовом файле используйте Page Object:

    # tests/test_example.py
    from utils.appium_utils import initialize_appium_driver
    from utils.home_page import HomePage
    import pytest
    
    @pytest.fixture(scope="function")
    def appium_driver(request):
        driver = initialize_appium_driver()
    
        def fin():
            driver.quit()
    
        request.addfinalizer(fin)
        return driver
    
    def test_example(appium_driver):
        home_page = HomePage(appium_driver)
        home_page.click_button()
        assert "Success" in appium_driver.page_source
    

Это уменьшит дублирование кода и сделает ваш код более модульным.

6.3 Настройка отчетов и логирования для более детального анализа результатов тестов

Используйте библиотеки для создания красочных и информативных отчетов о результатах выполнения тестов. Например, pytest-html предоставляет HTML-отчеты.

  1. Установите pytest-html:

    pip install pytest-html
  2. Запускайте тесты с использованием опции --html:

    pytest tests/ --html=report.html

Откройте сгенерированный report.html для подробного анализа результатов тестирования.

Эти шаги помогут вам сделать вашу систему автоматизации тестирования еще более гибкой и удобной в использовании. Применение шаблона Page Object также сделает ваш код более устойчивым к изменениям в пользовательском интерфейсе.

Заключение

В заключении этого руководства давайте подытожим ключевые моменты и выделенные шаги по настройке автоматизации тестирования мобильных приложений с использованием Appium и Pytest.

Важные моменты:

  1. Appium и Pytest: Appium предоставляет мощные инструменты для автоматизации тестирования мобильных приложений, а Pytest является удобным фреймворком для написания и запуска тестов.

  2. Структура проекта: Организуйте проект, создавая отдельные директории для тестов, тестируемого приложения и утилит.

  3. Инициализация Appium: Настройте файл appium_utils.py для создания Appium драйвера с параметрами вашего тестового окружения.

  4. Написание тестов: Используйте Pytest для создания тестовых сценариев. Разбейте код на функциональные блоки и используйте Page Object для улучшения обслуживаемости.

  5. Запуск тестов: Используйте команду pytest в терминале для запуска тестов. Рассмотрите опции Pytest для дополнительных возможностей, таких как запуск отдельных тестов или генерация отчетов.

  6. Дополнительные шаги (по желанию): Интегрируйте ваш проект с системами сборки, применяйте шаблон Page Object для улучшения читаемости кода и использования опций Pytest для более подробных отчетов.

Продолжение пути:

Автоматизация тестирования — это непрерывный процесс улучшения. Регулярно рецензируйте ваши тестовые сценарии, следите за изменениями в приложении и добавляйте новые тесты для проверки новой функциональности.

Не забывайте обновлять зависимости, следить за новыми версиями инструментов и использовать лучшие практики программирования.

Благодарим вас за то, что следовали этому руководству по настройке автоматизации тестирования мобильных приложений с Appium и Pytest. Успешных вам тестов и стабильных релизов вашего приложения!

Ресурсы и Ссылки

Ваш успех в автоматизации тестирования с Appium и Pytest также зависит от доступа к ресурсам и дополнительной информации. Вот несколько полезных ресурсов и ссылок, которые могут быть вам полезны:

Документация и Руководства:

  1. Официальная документация Appium: Полная документация Appium, включая руководства, API-спецификации и многое другое.

  2. Документация Pytest: Руководства и документация по Pytest, включая примеры использования и расширенные возможности.

Обучающие Ресурсы:

  1. Appium Pro: Еженедельные статьи и ресурсы по использованию Appium от основателя Appium, Джона Си. (На английском языке)

  2. Test Automation University — Mobile Testing: Курс по автоматизации тестирования мобильных приложений на Test Automation University, используя Python и Appium. (На английском языке)

Сообщества и Форумы:

  1. Форум Appium: Обсуждение вопросов и проблем с сообществом Appium.

  2. Stack Overflow — Appium: Задавайте вопросы и находите ответы на Stack Overflow.

Дополнительные Ресурсы:

  1. GitHub — Appium: Репозиторий Appium на GitHub. Здесь вы можете найти исходный код, отчеты об ошибках и внести свой вклад.

  2. GitHub — Pytest: Репозиторий Pytest на GitHub. Исследуйте исходный код и поддерживающую документацию.

Обратите внимание, что эти ресурсы могут быть на английском языке, и вы также можете искать аналоги на русском языке, если вам удобнее.

Успешных вам тестирований и разработки!

© Habrahabr.ru