Современный подход к автоматизации тестирования веб-приложений с помощью Python Playwright
Рассмотрели инструмент для автотестов веб-приложений — Playwright, его преимущества, настройку, проектирование и запуск тестов.
10К открытий18К показов
Автоматизация тестирования веб-приложений является неотъемлемой частью процесса разработки ПО. Многие QA-специалисты сталкиваются с трудностями при выборе инструментов для автоматизации. C подобной задачей столкнулась и наша команда тестирования.
Зачастую одним из главных вызовов автоматизации тестирования веб-приложений является сложность поддержки тестов. Веб-приложения часто могут меняться и обновляться, что требует постоянной доработки тестов. Некоторые инструменты автоматизации могут быть сложными в использовании и часто требуют большого количества времени на их изучение.
В данной статье рассмотрим инструмент для автоматизации тестирования веб-приложений — Playwright, его преимущества над некоторыми инструментами, настройку, проектирование и запуск тестов.
В чем основные преимущества Python Playwright
У многих на слуху Selenium и Cypress — это два наиболее популярных инструмента для автоматизации тестирования веб-приложений.
Selenium проверенный временем фреймворк, но имеет сложный API и может быть трудным для начинающих. Кроме того, он может быть медленным при выполнении тестов и иметь проблемы совместимости с некоторыми браузерами.
Cypress тоже популярный инструмент. Он имеет более простой API, чем Selenium, но ограничен в использовании парой браузеров, а также может быть медленным при выполнении тестов на больших приложениях.
Playwright — библиотека, созданная командой Microsoft, и основанная на асинхронном подходе. Она позволяет тестировать веб-приложения на разных платформах, предоставляет простой и интуитивно понятный API для написания тестов, который помогает легко взаимодействовать с элементами веб-страницы и выполнять различные действия: клики, заполнение форм, скроллинг и другие.
Однако основным преимуществом Playwright является скорость выполнения тестов. Она достигается благодаря использованию современных технологий, таких как Chromium и WebKit, а также асинхронной обработке запросов. Это означает, что при выполнении операций, которые могут занять некоторое время (например, загрузка страницы), не блокируется выполнение других действий. Код продолжает работать, пока операция не завершится, а затем обрабатывает результат. Это ускоряет выполнение тестов и повышает производительность приложения. Библиотека предоставляет возможность эмуляции мобильных устройств и настройки различных параметров браузера, что также является плюсом.
Для работы с сетью библиотека оснащена широким набором функций, например, перехватом запросов и ответов, манипуляцией cookie и заголовками запросов. Это позволяет легко тестировать веб-приложения, взаимодействующие с сервером через API.
Все эти аспекты подтолкнули нас к выбору библиотеки Playwright. Мы используем ее в связке с языком Python для тестирования веб-приложений, потому что Python — один из самых популярных языков программирования, который обладает широким набором библиотек и фреймворков для тестирования. Кроме того, Python имеет простой и понятный синтаксис, что делает его легким в изучении и использовании.
Комбинация Python и Playwright позволяет создавать мощные и эффективные тесты для веб-приложений, которые можно легко поддерживать и масштабировать.
Настройка окружения, проектирование и запуск тестов с помощью Python Playwright
Настройка окружения для автоматизации тестирования с помощью Python Playwright включает несколько шагов:
1. Установка Python и зависимостей
Сначала необходимо установить Python на компьютер, а затем — библиотеку Playwright с помощью команды в терминале:
2. Установка браузеров
Для использования Playwright необходимо установить браузеры, которые будут использоваться для тестирования. Playwright поддерживает Chromium, Firefox и WebKit. Для установки всех браузеров можно использовать команду
3. Создание тестового проекта
Далее нужно создать тестовый проект, который будет содержать тесты. Можно использовать любую удобную структуру проекта. Однако мы рекомендуем использовать готовые шаблоны. Шаблоны проектирования в тестировании программного обеспечения помогают создавать эффективные и надежные тесты.
Наиболее распространенные шаблоны проектирования в тестировании:
Page Object Pattern — шаблон проектирования, который используется для организации автоматизированных тестов на основе веб-страниц. Он позволяет разделить логику тестирования и логику взаимодействия с веб-страницами, что делает тесты более устойчивыми к изменениям в пользовательском интерфейсе.
Data Driven Testing — шаблон проектирования, позволяющий использовать различные наборы данных для одного и того же теста. Благодаря этому увеличивается покрытие тестирования и есть возможность обнаружить больше ошибок в приложении.
Behavior Driven Development (BDD) — методология разработки программного обеспечения, использующая язык понятный для бизнес-аналитиков и заказчиков для определения требований к приложению. BDD также может использоваться для создания автоматизированных тестов, которые проверяют, соответствует ли приложение требованиям заказчика.
Для использования шаблонов проектирования в тестировании с помощью Python Playwright необходимо:
- Определить цель тестирования и требования к приложению.
- Выбрать соответствующий шаблон проектирования для тестирования.
- Создать код для теста с использованием выбранного шаблона проектирования.
- Запустить тест и проанализировать результаты.
Рассмотрим проектирование по шаблону Page Object.
Для использования Page Object Pattern в тестировании веб-приложений с помощью Python Playwright необходимо создать классы, которые представляют веб-страницы приложения. Каждый класс должен содержать методы для взаимодействия с элементами на странице и проверки ожидаемых результатов.
Например, для тестирования страницы авторизации мы можем создать класс LoginPage:
В данном примере мы импортируем класс Page из модуля playwright.sync_api
и создаем класс LoginPage
.
В конструкторе класса LoginPage
происходит инициализация экземпляра класса Page
, который передается в качестве параметра.
Затем определяем методы класса LoginPage
:
- enter_username(self, username: str): метод для ввода имени пользователя в поле ввода с именем «username».
- enter_password(self, password: str): метод для ввода пароля в поле ввода с именем «password».
- click_login_button(self): метод для нажатия на кнопку «submit».
- is_error_message_displayed(self): метод для проверки отображения сообщения об ошибке.
В методе is_error_message_displayed(self)
используется метод is_visible()
экземпляра класса Page
для проверки видимости элемента с классом «error-message».
Далее мы можем использовать этот класс в нашем тесте:
Данный код представляет собой тестовый сценарий для проверки авторизации с неверными учетными данными.
Давайте рассмотрим код построчно.
Мы создаем класс TestAuth
.
Определяем метод test_login_with_invalid_credentials
, который принимает параметр page.
Создаем экземпляр класса LoginPage
, передавая в качестве параметра объект page
.
Вызываем методы enter_username
, enter_password
и click_login_button
экземпляра класса LoginPage
для ввода неверных учетных данных и выполнения попытки авторизации.
Вызываем метод is_error_message_displayed
экземпляра класса LoginPage
для проверки отображения сообщения об ошибке.
В конце метода test_login_with_invalid_credentials
происходит утверждение (assert), что сообщение об ошибке отображается на странице.
Как мы видим, данный код автоматизирует процесс проверки корректности работы страницы входа в систему при вводе неверных учетных данных.
Также нам необходимо написать фикстуру pytest в отдельном файле conftest.py
.
Данная фикстура определяет, что каждый новый тестовый класс будет запускаться и отрабатывать в браузере Chrome.
Для запуска тестов можно использовать любой фреймворк для тестирования, который поддерживает Python, например, pytest. Для запуска тестов с помощью pytest в консоли IDE можно использовать команду:
Это запустит все тесты в файле my_tests.py
.
Также стоит отметить, что Playwright имеет встроенный удобный инструмент для самодокументирования программного кода действий, выполняемых в браузере. Для этого достаточно ввести команду в консоли IDE:
После выполнения команды «playwright codegen» запустится браузер Chromium, пользователь должен выполнить несколько действий на веб-странице. Затем команда сгенерирует код автоматического теста на основе этих действий, который можно использовать для проверки работоспособности веб-приложения в будущем.
Это очень полезный инструмент для тестировщиков и разработчиков, поскольку он позволяет быстро создавать автоматические тесты без необходимости написания кода вручную.
В дополнение хотелось бы поделиться рекомендациями, которые можно использовать при автоматизации тестирования веб-приложений с помощью Python Playwright:
- Используйте Page Object Model (POM). POM — шаблон проектирования, который позволяет разделить элементы интерфейса пользователя и логику тестирования. Это позволяет легче поддерживать и расширять тесты.
- Используйте явные ожидания. Они гарантируют, что элементы загрузятся и будут доступны для дальнейшего использования.
- Используйте параметризацию. Она позволяет повторно использовать тесты для разных наборов данных.
- Используйте отчеты о тестировании. Это помогает отслеживать результаты тестирования и выявлять проблемы.
- Используйте контроль версий. Он помогает отслеживать изменения в коде и вносить изменения в тесты.
- Используйте логирование. Оно помогает отслеживать процесс выполнения тестов и выявлять проблемы.
- Используйте CI/CD. Интеграция тестов в конвеер позволяет автоматически запускать тесты при каждом изменении кода и обеспечивать быструю обратную связь.
- Используйте генерацию данных. Она позволяет создавать тестовые данные на лету, что упрощает и ускоряет процесс тестирования и обеспечивает более полное покрытие тестами.
- Используйте параметры запуска. Они позволяют настраивать тесты для разных окружений и конфигураций.
Наша компания постоянно работает над улучшением качества продуктов и процессов разработки. Поэтому в тестировании мы перешли на использование Playwright, так как Playwright имеет большой потенциал. С этим инструментом с открытым исходным кодом работает широкое сообщество разработчиков, что указывает на возможность постоянных обновлений и улучшений, а также появления новых функций и возможностей.
С помощью Playwright мы создаем более эффективные и надежные автоматизированные тесты, которые позволяют быстрее выявлять ошибки и улучшать качество наших продуктов. Playwright помогает сократить время на написание и запуск тестов, а также улучшить их стабильность и точность.
Автор: Денис Исангулов, руководитель отдела тестирования NGR Softlab
10К открытий18К показов