Возможно, вы знаете, что Selenium применяется для парсинга, но многие предпочитают использовать его по прямому назначению – для автоматизации тестирования на Python. В последнее время спрос на фреймворки тестирования для работы с Selenium резко возрос, что ставит перед разработчиком вопрос о выборе лучшего фреймворка, который будет соответствовать нужным требованиям.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Почему именно Python используют для автоматизации тестирования? Это связано с его простотой, интуитивностью и читабельностью. Это удобный для начинающих и высококонкурентный язык программирования. Он обеспечивает быстрое обучение и позволяет писать сценарии за меньшее время. Python прост для понимания, поэтому тестировщики, работающие вручную, чувствуют себя уверенно, переходя к автоматизации.
Давайте посмотрим, какие фреймворки Python подходят для решения задач автоматизации тестирования на Selenium.
PyTest
Это один из наиболее авторитетных фреймворков для масштабируемой автоматизации тестирования на Selenium. Благодаря открытому коду он легко доступен командам разработчиков и тестировщиков и учащимся.
PyTest поддерживает модульное, функциональное и API-тестирование. Он совместим с версиями Python 3.5 и PyPy3 и легко устанавливается с помощью Python Package Manager (pip).
Фреймворки для тестирования Python начинаются с традиционной номенклатуры test_
(или заканчиваются _test
). PyTest не имеет таких ограничений благодаря встроенным функциям автоматического обнаружения, которые ищут встроенные тестовые модули и функции. Кроме того, с помощью функции записи утверждений нет необходимости запоминать имена self.assert*
для получения данных о неудачных проверках.
Нельзя не отметить, что существуют проблемы совместимости с PyTest, то есть вы можете писать тест-кейсы с удобством, но не можете использовать их с другими фреймворками тестирования. Кроме того, PyTest не полностью поддерживает параллельное тестирование.
Требования:
- Изучение и использование Pytest не требует особых усилий, что позволяет легко приступить к работе, имея лишь небольшие знания любого фреймворка для тестирования.
- Для установки PyTest вам также потребуется интегрированная среда разработки Python и менеджер пакетов Python.
Robot
Robot – популярный фреймворк Selenium с открытым исходным кодом. Он применяется для реализации приемочного тестирования.
Приемочное тестирование также используется для разработки, управляемой тестами (TDD), и автоматизации роботизированных процессов (RPA) в рамках стратегии автоматизированного тестирования.
Robot Framework базируется на Python, но может работать и на .net-based IronPython и Java-based Python.
Для обеспечения читабельности тестов Robot использует подход, основанный на ключевых словах, данных и поведении. Этот фреймворк предоставляет легко понятные HTML-отчеты и скриншоты.
Robot имеет богатую экосистему API, позволяющую легко интегрироваться с инструментами сторонних разработчиков. Он очень хорошо документирован. Подходит для Windows, macOS и Linux, а также совместим со всеми приложениями, будь то мобильные, десктопные или веб-приложения.
Требования:
- Возможности фреймворка Robot могут быть оптимально реализованы при использовании Python версии 2.7.14 или выше.
- Для его установки используется pip.
- Для использования фреймворка Robot необходимо обязательно загрузить среду разработки PyCharm Community Edition.
Behave
Behave – это широко используемый фреймворк для Selenium, позволяющий командам разработчиков проводить BDD-тестирование.
Этот фреймворк для Selenium функционирует аналогично SpecFlow и фреймворку Cucumber для автоматизации тестирования. В нем используется язык Gherkin для создания понятных бизнесу сценариев тестовых примеров, стимулирующих разработку, ориентированную на бизнес (Business-Driven Development, BDD).
Behave основан на принципиально иной логике, что отличает его от всех других фреймворков автоматического тестирования.
У него есть и несколько недостатков. Например, он плохо поддерживается в среде PyCharm и может быть использован только для тестирования “черного ящика”. Основным требованием к автоматизированному браузерному тестированию является наличие параллельного тестирования. Но Behave не поддерживает это, поскольку в нем нет встроенной поддержки параллельного выполнения тестов.
Требования:
- Требуется Python версии 2.7.14 или выше.
- Базовые знания любого из инструментов Behavior Driven Development.
- Для его установки используется pip.
- Для работы с Behave также лучше использовать среду разработки.
PyUnit (или UnitTest)
UnitTest – это другое название PyUnit, который считается стандартным Python Selenium фреймворком для автоматизации тестирования. PyUnit – это фреймворк модульного тестирования для Python, созданный на основе JUnit и работающий аналогично другим фреймворкам модульного тестирования. Это первый автоматизированный фреймворк для модульного тестирования на языке Python, входящий в состав библиотеки тестирования Python.
Благодаря простой установке и настройке UnitTest используется многими разработчиками, начинающими работу с автоматическим тестированием на Python. Тест-кейсы имеют обычную номенклатуру, с префиксом test_
или постфиксом _test
.
Для отчетности UnitTest использует UnitTest-XML-reporting и генерирует XML-отчеты, как в случае Selenium-тестирования с JUnit. Традиционный метод именования CamelCase, заимствованный из JUnit, сохраняется и сейчас, что иногда делает тестовый код непонятным. Кроме того, растет потребность в шаблонном коде.
Требования:
- Поскольку UnitTest по умолчанию поставляется с Python, он не требует установки каких-либо дополнительных пакетов или модулей.
- Для начала работы с PyUnit достаточно базовых знаний Python Framework.
- В случае работы с дополнительными модулями потребуется использование менеджера пакетов Python (pip) и IDE.
Nose2
Nose2 – это еще один фреймворк для Selenium, предназначенный для модульного и функционального тестирования. Является наследником фреймворка Nose. Поскольку он основан на библиотеке Unittest, его также иногда называют расширением Unittest.
Nose2 поддерживает PyUnit, предоставляя плагины для выполнения тестов, автоматического обнаружения тест-кейсов и возможности сборки и сортировки документации.
Nose2 представляет собой язык специфичной области (DSL) для написания функциональных тестов. Его встроенная экосистема плагинов делает тестирование более простым и быстрым. Он также предоставляет поддержку декораторов, фикстур, классов, параметризованных модулей тестирования, сложной инициализации и автоматического обнаружения тестовых случаев. Однако его документация ограничена.
Требования:
- Nose2 функционирует с модулем Unittest, который поставляется вместе с библиотекой Python.
- Его необходимо установить с помощью менеджера пакетов Python (pip).
Testify
На смену Unittest и фреймворку Nose для Selenium пришел фреймворк Testify, который более соответствует парадигме Python. Он является продвинутой версией Unittest. Testify был создан после Unittest, поэтому тесты, созданные для Unittest, чтобы работать с Testify, требуют минимальных модификаций.
Этот фреймворк применяется главным образом для автоматизированного модульного, системного и интеграционного тестирования. Testify представляет собой успешный пример реализации семантического тестирования, подобного тому, что используется в Java.
Экосистема плагинов Testify включает важные свойства для отчетности и публикации. Другие функции, аналогичные функциям Nose2, включают автоматическое обнаружение тестов, установку на уровне класса и простой синтаксис для методов фикстур, которые должны выполняться один раз для всего набора тестовых методов.
Из недостатков стоит отметить, что у Testify нет обширной документации, да и возможность параллельного тестирования представляет собой определенную сложность.
Требования:
- Testify основан на существующем фреймворке Unittest, что обеспечивает постепенное освоение.
- Для его установки требуется только менеджер пакетов Python.
Lettuce
Lettuce – это фреймворк для тестирования, ориентированный на разработку на основе поведения (BDD). В основе его лежат Cucumber и Python. Этот фреймворк для Selenium был создан с целью упростить тестирование и сделать его интересным для пользователей.
Для создания тестовых сценариев и файлов функций с использованием понятных ключевых слов Lettuce использует язык Gherkin.
Этот фреймворк подходит для различных видов тестирования. Как и Behave, Lettuce позволяет проводить тестирование “черного ящика”, но не ограничивается им.
Для использования Lettuce требуется своевременное взаимодействие всех участников проекта, таких как разработчики, тестировщики, маркетинговые менеджеры и руководители проекта.
Требования:
- Для работы Lettuce необходим Python версии 2.7.14 или выше.
- Опыт работы с любым BDD-фреймворком.
- Менеджер пакетов Python (pip) для установки.
Заключение
Selenium показывает свои лучшие результаты, когда разработчики выполняют автоматизированное тестирование и экономят время, быстро внедряя изменения. Наибольшей проблемой, с которой Selenium должен справляться, несмотря на свою репутацию надежного инструмента для тестирования, является постоянно изменяющаяся природа фронтенд-технологий.
В этой статье мы рассмотрели несколько популярных фреймворков для автоматизации тестирования с использованием Selenium и Python. Все они имеют свои сильные и слабые стороны, так что выбор зависит от требований проекта и знаний команды.
Существуют инструменты BDD, такие как Behave и Lettuce, которые используются в случае, если в команде есть нетехнические специалисты. PyTest отлично подходит для разработки сложных функциональных тестов и является отличным выбором вместо стандартного фреймворка Python для Selenium. Если вы только начинаете и хотите узнать, как использовать Selenium с Python для тестирования, то Robot Framework должен быть отличным вариантом для начала.
Перевод статьи «Best Selenium Python Frameworks for Test automation».