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

В современной автоматизации тестирования на Python используют разные конфигурации тестовых фреймворков. Рассмотрим основные и наиболее популярные из них: 1. Python в связке с PyТеst и PageObject. 2. Python и Behave. 3. Python и Robot Framework.

Следует сказать, что в случае с Behave и Robot Framework используется BDD-тестирование, а в случае с PyTest — классический подход. Говоря о BDD (BehaviourDriven Development), мы говорим о разработке через поведенческое тестирование, то есть BDD допускает к написанию кода непрограммистов, создающих тесты на естественном языке. А вот в случае с классическим подходом автоматизированные тесты пишут программисты с помощью одного из фреймворков.

Конфигурация Python + PyTest + PageObject

Данная конфигурация характеризуется разграничением классов: • в одних классах описывают локаторы элементов; • в других описывают действия над элементами в методах; • в третьих, соответственно — бизнес-модели приложения.

При этом в отдельных классах реализуют сами автоматизированные тесты, собираемые с помощью PyTest.

Посмотрим на базовый шаблон для написания теста, который зависит от параметра командной строки:

# content of test_sample.py
deftest_answer(cmdopt):
ifcmdopt == "type1":
print("first")
elifcmdopt == "type2":
print("second")
assert0# to see what was printed

Если хотите рассмотреть этот шаблон подробнее, вот вам ссылка на официальную документацию.

Плюсы

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

Кроме того, у PyTest существуют фикстуры, которые, по сути, являются декораторами в Python. Посредством их вы сможете делать setup и teardown на различных уровнях (“function”, “class”, “module”, “session”), а также параметризацию и установку меток.

Минусы

Существенных недостатков у данной конфигурации почти нет, т. к. это проверенный подход, прекрасно себя зарекомендовавший на проектах разной сложности. В принципе, можно сказать, что один из минусов — это необходимость знания Python на довольно высоком уровне. Но разве можно в современных реалиях эффективно заниматься автоматизацией тестирования без знания языка программирования?

Конфигурация Python + Robot Framework

Robot Framework относят к фреймворкам для автоматизации приемочного тестирования, который использует концепцию keyword-driven. Данный подход подразумевает разработку ключевых слов. Эти ключевые слова могут применять для создания автотестов специалисты, которые не имеют глубоких познаний в программировании. Таким образом, на основании ключевых слов создаются тесты с различными входными данными.

Нередко Robot Framework применяют при реализации низкоуровневых взаимодействий с тестируемым продуктом и в качестве раннера. Также на Robot Framework можно и программировать, однако если уровень понимания фреймворка недостаточен, вы совершите много ошибок.

Если хотите больше примеров кода, вам сюда.

Плюсы

Главное преимущество конфигурации Python + Robot Framework состоит в возможности писать автотесты силами специалистов, не владеющих языком программирования. Часть функциональности реализована «из коробки», для её применения совсем необязательно иметь навыки работы с кодом. Но, говоря по правде, этот плюс легко становится минусом (об этом ниже).

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

Минусы

Следует выделить три основных недостатка: 1. Не погрузившись в код и не выполнив его детальный анализ, вы можете и не понять, что же упало внутри Python, который вызван из Robot Framework. А значит, если сотрудник программистом не является, он может столкнуться со сложностями с дебагом кода автотестов. Не обойтись без помощи программиста и в том случае, когда меняется продукт либо инфраструктура. 2. Из-за создания дополнительного уровня абстракции автотесты при таком подходе функционирует медленнее. 3. Разработка кода и поддержка функциональности «под капотом» проекта зачастую занимает намного больше времени, чем экономится во время написании тестов на естественном языке.

Конфигурация Python + Behave

Суть подхода — описание автоматизированных тестов на высоком уровне, то есть на естественном языке. Как правило, код пишется в стандартном Python-файле, который потом исполняется. Во многом Behave похож на Robot Framework, однако поддерживает Gherkin.

Feature: showing off behave

  Scenario: run a simple test
     Given we have behave installed
      When we implement a test
      Then behave will test it forus!

Другие примеры кода здесь.

Плюсы

Преимущества такие же, что и в случае с Robot Framework — возможность писать автотесты силами сотрудников, не знающих язык программирования. Соответственно, характерны и минусы, ведь без умения погружаться в код на Python писать тесты будет очень сложно. В результате — долго и неэффективно. Зато есть подобие фикстур из PyTest, позволяющих модифицировать поведение функции, не меняя её код, что очень удобно. Вдобавок к этому, Behave без проблем встраивается в серверы непрерывной интеграции, а также формирует понятные и красивые отчёты.

Минусы

Об основных минусах мы уже сказали, но есть и некоторые особенности. Одна из них заключается в отсутствии возможности распараллелить автоматизированные тесты, что критично, если мы говорим о серьёзной автоматизации. В принципе, разработчики Behave планируют её добавить.

Выбираем фреймворк для тестирования

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

Как правило, связку Python + Robot Framework либо Python + Behave используют, если: 1. В команде много QA-специалистов и мало SDET либо автоматизаторов. В результате автотестов не хватает, и их надо нарастить. Используя вышеназванную связку, автоматизаторы либо SDET программируют и следят за кодом, а QA пишут тест-кейсы и следят за покрытием. 2. Менеджмент плохо осведомлен о технической составляющей и желает отслеживать качество разрабатываемого продукта с помощью кода автотестов, написанных на естественном языке.

Что касается комбинации Python + PyTest + PageObject, то её, как правило, выбирают в большинстве остальных случаев, то есть чаще всего. Это та ситуация, когда специалисты умеют программировать и читать код, а менеджмент не особо интересуется тем, что происходит глубоко в приложении — ему достаточно ключевых результатов и показателей тестирования.

Источник