Введение
В современном мире разработки мобильных приложений автоматизированное тестирование становится неотъемлемой частью процесса обеспечения качества продукта. В этом руководстве мы рассмотрим, как создать эффективную систему автоматизации тестирования с использованием двух мощных инструментов: Appium и Pytest.
Почему Appium?
Appium — это открытый и мощный инструмент для автоматизации тестирования мобильных приложений на различных платформах, включая Android и iOS. Он обеспечивает единый API для взаимодействия с различными устройствами и платформами, что делает его идеальным выбором для тестировщиков, сталкивающихся с разнообразием устройств и операционных систем.
Почему Pytest?
Pytest — это фреймворк для написания и запуска тестов на языке программирования Python. Его простой синтаксис и богатый функционал делают его предпочтительным выбором для автоматизации тестирования. Pytest легко интегрируется с различными инструментами и обеспечивает чистый, удобный код для организации тестовых сценариев.
Цель руководства
Цель этого руководства — предоставить подробный шаг за шагом план для настройки автоматизации тестирования мобильных приложений с использованием Appium и Pytest. Мы рассмотрим процесс установки необходимых инструментов, создания структуры проекта, написания тестов и их последующего запуска.
Будем следовать этапам сначала до конечной реализации, давая вам не только технические инструкции, но и контекст и понимание лучших практик в области автоматизации тестирования.
Присоединитесь к нам в этом захватывающем путеводителе по миру автоматизации тестирования мобильных приложений с использованием Appium и Pytest!
Шаг 1: Подготовка окружения
Перед тем как начать автоматизацию тестирования с Appium и Pytest, необходимо создать подготовленное и стабильное окружение. В этом шаге мы рассмотрим установку необходимых зависимостей.
1.1 Установка Python и необходимых зависимостей
Установка Python
Посетите официальный сайт Python и загрузите последнюю версию Python для вашей операционной системы.
Запустите установочный файл Python и следуйте инструкциям по установке.
Установка необходимых библиотек
Откройте терминал или командную строку и выполните следующую команду для установки библиотек Appium и Pytest:
pip install Appium-Python-Client pytest
1.2 Установка Node.js и Appium
Установка Node.js
Посетите официальный сайт Node.js и загрузите последнюю версию Node.js.
Запустите установочный файл Node.js и следуйте инструкциям по установке.
Установка Appium
После установки Node.js, откройте терминал или командную строку и выполните следующую команду для установки Appium:
npm install -g appium
Эта команда установит Appium глобально на вашем компьютере.
Запустите 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.
Установите Jenkins, следуя официальной документации.
Создайте новый проект Jenkins и настройте его для отслеживания изменений в вашем репозитории.
В настройках проекта добавьте сценарий для запуска тестов:
cd /path/to/your/project pytest tests/
Теперь Jenkins будет автоматически запускать ваши тесты после каждого обновления кода.
6.2 Применение шаблона Page Object для улучшения читаемости и обслуживаемости кода
Шаблон Page Object позволяет абстрагировать логику взаимодействия с элементами на экране в отдельные классы. Это улучшит читаемость и обслуживаемость кода, особенно при масштабировании проекта.
Создайте класс в директории
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()
В вашем тестовом файле используйте 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-отчеты.
Установите
pytest-html
:pip install pytest-html
Запускайте тесты с использованием опции
--html
:pytest tests/ --html=report.html
Откройте сгенерированный report.html
для подробного анализа результатов тестирования.
Эти шаги помогут вам сделать вашу систему автоматизации тестирования еще более гибкой и удобной в использовании. Применение шаблона Page Object также сделает ваш код более устойчивым к изменениям в пользовательском интерфейсе.
Заключение
В заключении этого руководства давайте подытожим ключевые моменты и выделенные шаги по настройке автоматизации тестирования мобильных приложений с использованием Appium и Pytest.
Важные моменты
Appium и Pytest: Appium предоставляет мощные инструменты для автоматизации тестирования мобильных приложений, а Pytest является удобным фреймворком для написания и запуска тестов.
Структура проекта: Организуйте проект, создавая отдельные директории для тестов, тестируемого приложения и утилит.
Инициализация Appium: Настройте файл
appium_utils.py
для создания Appium драйвера с параметрами вашего тестового окружения.Написание тестов: Используйте Pytest для создания тестовых сценариев. Разбейте код на функциональные блоки и используйте Page Object для улучшения обслуживаемости.
Запуск тестов: Используйте команду
pytest
в терминале для запуска тестов. Рассмотрите опции Pytest для дополнительных возможностей, таких как запуск отдельных тестов или генерация отчетов.Дополнительные шаги (по желанию): Интегрируйте ваш проект с системами сборки, применяйте шаблон Page Object для улучшения читаемости кода и использования опций Pytest для более подробных отчетов.
Продолжение пути
Автоматизация тестирования - это непрерывный процесс улучшения. Регулярно рецензируйте ваши тестовые сценарии, следите за изменениями в приложении и добавляйте новые тесты для проверки новой функциональности.
Не забывайте обновлять зависимости, следить за новыми версиями инструментов и использовать лучшие практики программирования.
Благодарим вас за то, что следовали этому руководству по настройке автоматизации тестирования мобильных приложений с Appium и Pytest. Успешных вам тестов и стабильных релизов вашего приложения!
Ресурсы и Ссылки
Ваш успех в автоматизации тестирования с Appium и Pytest также зависит от доступа к ресурсам и дополнительной информации. Вот несколько полезных ресурсов и ссылок, которые могут быть вам полезны:
Документация и Руководства
Официальная документация Appium: Полная документация Appium, включая руководства, API-спецификации и многое другое.
Документация Pytest: Руководства и документация по Pytest, включая примеры использования и расширенные возможности.
Обучающие Ресурсы
Appium Pro: Еженедельные статьи и ресурсы по использованию Appium от основателя Appium, Джона Си. (На английском языке)
Test Automation University - Mobile Testing: Курс по автоматизации тестирования мобильных приложений на Test Automation University, используя Python и Appium. (На английском языке)
Сообщества и Форумы
Форум Appium: Обсуждение вопросов и проблем с сообществом Appium.
Stack Overflow - Appium: Задавайте вопросы и находите ответы на Stack Overflow.
Дополнительные Ресурсы
GitHub - Appium: Репозиторий Appium на GitHub. Здесь вы можете найти исходный код, отчеты об ошибках и внести свой вклад.
GitHub - Pytest: Репозиторий Pytest на GitHub. Исследуйте исходный код и поддерживающую документацию.
Обратите внимание, что эти ресурсы могут быть на английском языке, и вы также можете искать аналоги на русском языке, если вам удобнее.
Успешных вам тестирований и разработки!