0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В современной автоматизации тестирования на Python используют разные конфигурации тестовых фреймворков. Рассмотрим основные и наиболее популярные из них: 1.<strong>Python</strong>в связке с<strong>PyТеst</strong>и<strong>PageObject</strong>. 2.<strong>Python</strong>и<strong>Behave</strong>. 3.<strong>Python</strong>и<strong>Robot Framework</strong>.</p>
1
<p>В современной автоматизации тестирования на Python используют разные конфигурации тестовых фреймворков. Рассмотрим основные и наиболее популярные из них: 1.<strong>Python</strong>в связке с<strong>PyТеst</strong>и<strong>PageObject</strong>. 2.<strong>Python</strong>и<strong>Behave</strong>. 3.<strong>Python</strong>и<strong>Robot Framework</strong>.</p>
2
<p>Следует сказать, что в случае с Behave и Robot Framework используется BDD-тестирование, а в случае с PyTest - классический подход. Говоря о BDD (BehaviourDriven Development), мы говорим о разработке через поведенческое тестирование, то есть BDD допускает к написанию кода непрограммистов, создающих тесты на естественном языке. А вот в случае с классическим подходом автоматизированные тесты пишут программисты с помощью одного из фреймворков.</p>
2
<p>Следует сказать, что в случае с Behave и Robot Framework используется BDD-тестирование, а в случае с PyTest - классический подход. Говоря о BDD (BehaviourDriven Development), мы говорим о разработке через поведенческое тестирование, то есть BDD допускает к написанию кода непрограммистов, создающих тесты на естественном языке. А вот в случае с классическим подходом автоматизированные тесты пишут программисты с помощью одного из фреймворков.</p>
3
<h2>Конфигурация Python + PyTest + PageObject</h2>
3
<h2>Конфигурация Python + PyTest + PageObject</h2>
4
<p>Данная конфигурация характеризуется разграничением классов: • в одних классах описывают локаторы элементов; • в других описывают действия над элементами в методах; • в третьих, соответственно - бизнес-модели приложения.</p>
4
<p>Данная конфигурация характеризуется разграничением классов: • в одних классах описывают локаторы элементов; • в других описывают действия над элементами в методах; • в третьих, соответственно - бизнес-модели приложения.</p>
5
<p>При этом в отдельных классах реализуют сами автоматизированные тесты, собираемые с помощью PyTest.</p>
5
<p>При этом в отдельных классах реализуют сами автоматизированные тесты, собираемые с помощью PyTest.</p>
6
<p>Посмотрим на базовый шаблон для написания теста, который зависит от параметра командной строки:</p>
6
<p>Посмотрим на базовый шаблон для написания теста, который зависит от параметра командной строки:</p>
7
# content of test_sample.py deftest_answer(cmdopt): ifcmdopt == "type1": print("first") elifcmdopt == "type2": print("second") assert0# to see what was printed<p>Если хотите рассмотреть этот шаблон подробнее, вот вам<a>ссылка</a>на официальную документацию.</p>
7
# content of test_sample.py deftest_answer(cmdopt): ifcmdopt == "type1": print("first") elifcmdopt == "type2": print("second") assert0# to see what was printed<p>Если хотите рассмотреть этот шаблон подробнее, вот вам<a>ссылка</a>на официальную документацию.</p>
8
<h3>Плюсы</h3>
8
<h3>Плюсы</h3>
9
<p>Главный плюс этой конфигурации - легкость в применении, расширяемость, плюс возможность быстро изменить структуру автоматизированных тестов. Вы можете быстро настроить систему отчётов, допустим, подключить ReportPortal либо аналогичный инструмент для формирования отчётов.</p>
9
<p>Главный плюс этой конфигурации - легкость в применении, расширяемость, плюс возможность быстро изменить структуру автоматизированных тестов. Вы можете быстро настроить систему отчётов, допустим, подключить ReportPortal либо аналогичный инструмент для формирования отчётов.</p>
10
<p>Кроме того, у PyTest существуют фикстуры, которые, по сути, являются декораторами в Python. Посредством их вы сможете делать setup и teardown на различных уровнях (“function”, “class”, “module”, “session”), а также параметризацию и установку меток.</p>
10
<p>Кроме того, у PyTest существуют фикстуры, которые, по сути, являются декораторами в Python. Посредством их вы сможете делать setup и teardown на различных уровнях (“function”, “class”, “module”, “session”), а также параметризацию и установку меток.</p>
11
<h3>Минусы</h3>
11
<h3>Минусы</h3>
12
<p>Существенных недостатков у данной конфигурации почти нет, т. к. это проверенный подход, прекрасно себя зарекомендовавший на проектах разной сложности. В принципе, можно сказать, что один из минусов - это необходимость знания Python на довольно высоком уровне. Но разве можно в современных реалиях эффективно заниматься автоматизацией тестирования без знания языка программирования?</p>
12
<p>Существенных недостатков у данной конфигурации почти нет, т. к. это проверенный подход, прекрасно себя зарекомендовавший на проектах разной сложности. В принципе, можно сказать, что один из минусов - это необходимость знания Python на довольно высоком уровне. Но разве можно в современных реалиях эффективно заниматься автоматизацией тестирования без знания языка программирования?</p>
13
<h2>Конфигурация Python + Robot Framework</h2>
13
<h2>Конфигурация Python + Robot Framework</h2>
14
<p>Robot Framework относят к фреймворкам для автоматизации приемочного тестирования, который использует концепцию keyword-driven. Данный подход подразумевает разработку ключевых слов. Эти ключевые слова могут применять для создания автотестов специалисты, которые не имеют глубоких познаний в программировании. Таким образом, на основании ключевых слов создаются тесты с различными входными данными.</p>
14
<p>Robot Framework относят к фреймворкам для автоматизации приемочного тестирования, который использует концепцию keyword-driven. Данный подход подразумевает разработку ключевых слов. Эти ключевые слова могут применять для создания автотестов специалисты, которые не имеют глубоких познаний в программировании. Таким образом, на основании ключевых слов создаются тесты с различными входными данными.</p>
15
<p>Нередко Robot Framework применяют при реализации низкоуровневых взаимодействий с тестируемым продуктом и в качестве раннера. Также на Robot Framework можно и программировать, однако если уровень понимания фреймворка недостаточен, вы совершите много ошибок.</p>
15
<p>Нередко Robot Framework применяют при реализации низкоуровневых взаимодействий с тестируемым продуктом и в качестве раннера. Также на Robot Framework можно и программировать, однако если уровень понимания фреймворка недостаточен, вы совершите много ошибок.</p>
16
<p>Если хотите больше примеров кода, вам<a>сюда</a>.</p>
16
<p>Если хотите больше примеров кода, вам<a>сюда</a>.</p>
17
<h3>Плюсы</h3>
17
<h3>Плюсы</h3>
18
<p>Главное преимущество конфигурации Python + Robot Framework состоит в возможности писать автотесты силами специалистов, не владеющих языком программирования. Часть функциональности реализована "из коробки", для её применения совсем необязательно иметь навыки работы с кодом. Но, говоря по правде, этот плюс легко становится минусом (об этом ниже).</p>
18
<p>Главное преимущество конфигурации Python + Robot Framework состоит в возможности писать автотесты силами специалистов, не владеющих языком программирования. Часть функциональности реализована "из коробки", для её применения совсем необязательно иметь навыки работы с кодом. Но, говоря по правде, этот плюс легко становится минусом (об этом ниже).</p>
19
<p>Непосредственно во фреймворк встроена система логирования, редактор тестов и много вспомогательных плагинов, облегчающих интеграцию в проекты. При этом архитектура выстроена таким образом, что можно расширять функциональность, а также писать собственные библиотеки на Python.</p>
19
<p>Непосредственно во фреймворк встроена система логирования, редактор тестов и много вспомогательных плагинов, облегчающих интеграцию в проекты. При этом архитектура выстроена таким образом, что можно расширять функциональность, а также писать собственные библиотеки на Python.</p>
20
<h3>Минусы</h3>
20
<h3>Минусы</h3>
21
<p>Следует выделить три основных недостатка: 1. Не погрузившись в код и не выполнив его детальный анализ, вы можете и не понять, что же упало внутри Python, который вызван из Robot Framework. А значит, если сотрудник программистом не является, он может столкнуться со сложностями с дебагом кода автотестов. Не обойтись без помощи программиста и в том случае, когда меняется продукт либо инфраструктура. 2. Из-за создания дополнительного уровня абстракции автотесты при таком подходе функционирует медленнее. 3. Разработка кода и поддержка функциональности "под капотом" проекта зачастую занимает намного больше времени, чем экономится во время написании тестов на естественном языке.</p>
21
<p>Следует выделить три основных недостатка: 1. Не погрузившись в код и не выполнив его детальный анализ, вы можете и не понять, что же упало внутри Python, который вызван из Robot Framework. А значит, если сотрудник программистом не является, он может столкнуться со сложностями с дебагом кода автотестов. Не обойтись без помощи программиста и в том случае, когда меняется продукт либо инфраструктура. 2. Из-за создания дополнительного уровня абстракции автотесты при таком подходе функционирует медленнее. 3. Разработка кода и поддержка функциональности "под капотом" проекта зачастую занимает намного больше времени, чем экономится во время написании тестов на естественном языке.</p>
22
<h2>Конфигурация Python + Behave</h2>
22
<h2>Конфигурация Python + Behave</h2>
23
<p>Суть подхода - описание автоматизированных тестов на высоком уровне, то есть на естественном языке. Как правило, код пишется в стандартном Python-файле, который потом исполняется. Во многом Behave похож на Robot Framework, однако поддерживает Gherkin.</p>
23
<p>Суть подхода - описание автоматизированных тестов на высоком уровне, то есть на естественном языке. Как правило, код пишется в стандартном Python-файле, который потом исполняется. Во многом Behave похож на Robot Framework, однако поддерживает Gherkin.</p>
24
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!<p>Другие примеры кода<a>здесь</a>.</p>
24
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!<p>Другие примеры кода<a>здесь</a>.</p>
25
<h3>Плюсы</h3>
25
<h3>Плюсы</h3>
26
<p>Преимущества такие же, что и в случае с Robot Framework - возможность писать автотесты силами сотрудников, не знающих язык программирования. Соответственно, характерны и минусы, ведь без умения погружаться в код на Python писать тесты будет очень сложно. В результате - долго и неэффективно. Зато есть подобие фикстур из PyTest, позволяющих модифицировать поведение функции, не меняя её код, что очень удобно. Вдобавок к этому, Behave без проблем встраивается в серверы непрерывной интеграции, а также формирует понятные и красивые отчёты.</p>
26
<p>Преимущества такие же, что и в случае с Robot Framework - возможность писать автотесты силами сотрудников, не знающих язык программирования. Соответственно, характерны и минусы, ведь без умения погружаться в код на Python писать тесты будет очень сложно. В результате - долго и неэффективно. Зато есть подобие фикстур из PyTest, позволяющих модифицировать поведение функции, не меняя её код, что очень удобно. Вдобавок к этому, Behave без проблем встраивается в серверы непрерывной интеграции, а также формирует понятные и красивые отчёты.</p>
27
<h3>Минусы</h3>
27
<h3>Минусы</h3>
28
<p>Об основных минусах мы уже сказали, но есть и некоторые особенности. Одна из них заключается в отсутствии возможности распараллелить автоматизированные тесты, что критично, если мы говорим о серьёзной автоматизации. В принципе, разработчики Behave планируют её добавить.</p>
28
<p>Об основных минусах мы уже сказали, но есть и некоторые особенности. Одна из них заключается в отсутствии возможности распараллелить автоматизированные тесты, что критично, если мы говорим о серьёзной автоматизации. В принципе, разработчики Behave планируют её добавить.</p>
29
<h2>Выбираем фреймворк для тестирования</h2>
29
<h2>Выбираем фреймворк для тестирования</h2>
30
<p>Невозможно однозначно сказать, какой фреймворк лучше, ведь каждый подходит для решения определённых задач с учётом человеческих ресурсов и фактических потребностей проекта.</p>
30
<p>Невозможно однозначно сказать, какой фреймворк лучше, ведь каждый подходит для решения определённых задач с учётом человеческих ресурсов и фактических потребностей проекта.</p>
31
<p>Как правило, связку Python + Robot Framework либо Python + Behave используют, если: 1. В команде много QA-специалистов и мало SDET либо автоматизаторов. В результате автотестов не хватает, и их надо нарастить. Используя вышеназванную связку, автоматизаторы либо SDET программируют и следят за кодом, а QA пишут тест-кейсы и следят за покрытием. 2. Менеджмент плохо осведомлен о технической составляющей и желает отслеживать качество разрабатываемого продукта с помощью кода автотестов, написанных на естественном языке.</p>
31
<p>Как правило, связку Python + Robot Framework либо Python + Behave используют, если: 1. В команде много QA-специалистов и мало SDET либо автоматизаторов. В результате автотестов не хватает, и их надо нарастить. Используя вышеназванную связку, автоматизаторы либо SDET программируют и следят за кодом, а QA пишут тест-кейсы и следят за покрытием. 2. Менеджмент плохо осведомлен о технической составляющей и желает отслеживать качество разрабатываемого продукта с помощью кода автотестов, написанных на естественном языке.</p>
32
<p>Что касается комбинации Python + PyTest + PageObject, то её, как правило, выбирают в большинстве остальных случаев, то есть чаще всего. Это та ситуация, когда специалисты умеют программировать и читать код, а менеджмент не особо интересуется тем, что происходит глубоко в приложении - ему достаточно ключевых результатов и показателей тестирования.</p>
32
<p>Что касается комбинации Python + PyTest + PageObject, то её, как правило, выбирают в большинстве остальных случаев, то есть чаще всего. Это та ситуация, когда специалисты умеют программировать и читать код, а менеджмент не особо интересуется тем, что происходит глубоко в приложении - ему достаточно ключевых результатов и показателей тестирования.</p>
33
<p><a>Источник</a></p>
33
<p><a>Источник</a></p>
34
34