Обзор фреймворков для тестирования на Python | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Обзор фреймворков для тестирования на 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 можно и программировать, однако если уровень понимания фреймворка недостаточен, вы совершите много ошибок.

14474917092019_395ac55f9d2bdf7b2eaa249aca1918774fc91ed3.jpg_1-20219-4350dd.webp

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

Плюсы

Главное преимущество конфигурации 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, то её, как правило, выбирают в большинстве остальных случаев, то есть чаще всего. Это та ситуация, когда специалисты умеют программировать и читать код, а менеджмент не особо интересуется тем, что происходит глубоко в приложении — ему достаточно ключевых результатов и показателей тестирования.

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!