[Python, Тестирование веб-сервисов] Почему мне так нравится использовать Python для автоматизации тестирования? (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Июн-2021 19:33


Когда дело доходит до автоматизации тестирования, первый и самый сложный вопрос, который встает перед вами это какой язык выбрать, чтобы он имел хорошую поддержку автоматизации тестирования. Python, Java, C#, Ruby и т.д. – лишь некоторые из популярных языков, которые можно использовать с фреймворком для автоматизации Selenium. Несмотря на это, во всем мире QA-команды активно используют именно Python, особенно в связке с Selenium WebDriver. У разработчиков и тестировщиков появляется несколько вариантов, когда дело доходит до использования языков программирования с фреймворком Selenium. Как у инженера по автоматизации, у меня была возможность пользоваться разными языками, начиная с С и заканчивая Java, Python, C++ в зависимости от проекта. Несмотря на то, что мне удобно использовать Java и C# с Selenium, Python все равно остается лучшим языком для написания скриптов для автоматизации тестирования с этим фреймворком. В этой статье я расскажу о 12 основных причинах, по которым автоматизированное тестирование на Python в связке с Selenium WebDriver – это отличный вариант в моем случае.  Итак, начнем. Немногословный и хорошо читаемый Большинство из вас согласится, что Python – один из лучших языков программирования, когда речь идет о простоте написания кода и удобстве чтения. По сравнению с другими языками программирования, которые можно использовать для автоматизации тестирования с Selenium, Python не такой многословный и относительно прост в использовании. Поскольку Python – скриптовый язык, тестировщику не нужно беспокоиться о компиляции для преобразования кода в исполняемый файл. Дзен Python, который является отличным руководством по автоматизации тестирования на Python, напоминает нам о том, что реализация, которую легко объяснить – это всегда хорошая идея! По сути, это значит, что тесты, реализованные как часть набора тестов должны быть удобочитаемыми, наглядными и принцип их работы должно быть легко объяснить. API, реализующие автоматизацию тестирования на Python, используются для подключения к браузеру через фреймворк автоматизации Selenium. Если использовать Selenium WebDriver по назначению, то тесты пишутся предельно легко. Ниже я приложил скриншот с основополагающими принципами проектирования на Python (если вы напишете import this в командной строке, то получите Дзен Python):
Исчерпывающий список фреймворков для автоматизации тестирования на Python PyUnit (или Unittest) – это дефолтный фреймворк для тестирования на Python. Помимо PyUnit, в Python есть ряд фреймворков тестирования для Selenium. Вот несколько широко используемых - PyTest, Behavior, Robot, Lettuce, Node 2 и Testify. Такие фреймворки, как PyTest, Nose 2 и Testify, можно использовать для автоматизированного тестирования юнитов, интеграционного тестирования и тестирования систем. Фреймворк Robot – это наиболее предпочтительный фреймворк автоматизации тестирования Python для автоматизации роботизированных процессов (RPA), тестирования с Selenium и ATDD (разработки на основе приемочных тестов). Lettuce и Behavior - это фреймворки для тестирования на Python, которые лучше всего подходят для BDD (Behavior Driven Development). Весь широкий спектр фреймворков можно установить с минимальными усилиями (например, с помощью команды pip install) и их очень удобно использовать в связке с Selenium WebDriver. Очень немногие языки программирования предлагают такое разнообразие для автоматизации тестирования, и это еще одно преимущество Python, которое делает его лучшим языком для автоматизации тестирования. PyTest – лучший фреймворк для автоматизации тестирования на Python Ранее мы говорили о популярных фреймворках для автоматизированного тестирования на Python, но этот список возглавляет PyTest, как лучший фреймворк. PyTest также может использоваться для модульного, интеграционного и сквозного тестирования, как и другие фреймворки Python. Несмотря на то, что PyUnit (unittest) – фреймворк по умолчанию, разработчики и тестировщики активно использую PyTest, поскольку он функциональнее PyUnit. Тесты могут состоять из простых функций, или же они могут принимать входные параметры для поддержки параметризированного тестирования. Фикстуры PyTest позволяют с легкостью выполнять тесты на различных сочетаниях браузеров и платформ. Параметризированные фикстуры PyTest можно выполнять с различными входными значениями.  Перенос существующих реализаций, использующих PyTest и Selenium WebDriver, на параметризованные фикстуры требует минимальных усилий. Фикстуры лучше всего подходят для выполнения операций настройки и очистки. Плагины, которыми можно расширить PyTest, могут помочь в покрытии кода, параллельном тестировании и многом другом.  Очень простое параллельное тестирование Параллельное тестирование в Selenium широко используется для ускорения выполнения автоматизированных тестов на различных сочетаниях браузеров и платформ (т.е. операционных систем). Все языки программирования поддерживают параллельное тестирование (или параллельное выполнение) с помощью фреймворка Selenium, но его чертовски просто использовать в Python. При использовании фреймворка PyTest плагин pytest-xdist помогает выполнять тесты параллельно. Этот вариант предпочтителен в тех случаях, когда тесты не являются потокобезопасными и нуждаются в изоляции состояния. Установить плагин можно выполнив pip install <имя плагина> в терминале. Плагин pytest-parallel следует использовать для параллельного выполнения тестов Selenium. Он является потокобезопасным и не управляет состоянием в среде Python. Следовательно, pytest-xdist реализует параллелизм, тогда как pytest-parallel – конкурентность и параллелизм. В них есть способ выделить максимальное количество воркеров (или процессов) для запуска максимального количества одновременных тестов на одного воркера. Включение параллельного выполнения с помощью PyTest не требует каких-либо изменений в существующей реализации, поскольку соответствующие опции для параллельного тестирования предоставляются в терминале при запуске кода.
Тот же принцип параллельного тестирования применим и к другим фреймворкам тестирования на Python, таким как Node 2, Behavior, Lettuce и другим. С другой стороны, включение параллельного тестирования с помощью Selenium Java или Selenium C# или других комбинаций требует изменений в коде и подразумевает больше шагов, чем в Python. Простота установки пакетов PIP – это стандартная система менеджмента пакетов в Python. Установка нового пакета с помощью pip не требует загрузки пакета. Команда pip install ищет необходимый пакет в PyPI, подтягивает зависимости и устанавливает необходимые пакеты, чтобы обеспечить выполнение запроса на установку без каких-либо проблем. Несмотря на то, что такие языки, как C# и Java, предлагают относительно схожие функции (например, консоль диспетчера пакетов в C#), установка пакетов в Python через pip – совершенно другой опыт! Мультипарадигмальный язык программирования Python – это мультипарадигмальный язык программирования. Следовательно, в нем есть полная поддержка ООП и структурного программирования. Большинство функций Python поддерживают функциональное программирование и аспектно-ориентированное программирование. Требования аспектно-ориентированного программирования реализуются путем включения метапрограммирования, которое дает возможность программам рассматривать другие программы в качестве данных. Читабельность и написание тестовых функций на Python реализованы лучше, поскольку фреймворк не навязывает добавление функций в классы. В отличие от других языков программирования, Python позволяет тестировщику решать, что следует использовать для автоматизации тестирования на Selenium – классы или функции. Широкий выбор IDE Для автоматизированного тестирования на Python я предпочитаю использовать PyCharm (Community Edition), поскольку его можно легко использовать вне зависимости от фреймворков, которые обеспечивают автоматизацию с Selenium. Я бы рекомендовал переходить на PyCharm (Professional Edition) только в том случае, если вы используете BDD -фреймворки в Python. Можно использовать GVim, Notepad++ и Visual Studio Code для быстрого редактирования, особенно если сценарии автоматизации тестирования не настолько сложны. Visual Studio Code я выбираю в тех случаях, когда дело доходит до редактирования кода, поскольку он предоставляет некоторые плагины, которые в значительной степени облегчают задачи редактирования. Динамическая типизация Python использует динамическую типизацию и позднее связывание (или динамическое разрешение имен), которое связывает методы и имена переменных в ходе выполнения. Эта механика очень удобна для автоматизации тестирования на Python. Python также предлагает такие опции, как Pyre и Mypy, которые используются для статической проверки типов. С их помощью Python позволяет сочетать возможности динамической и статической типизации. Мощная и беспроблемная отчетность Отчеты – одна из основных составляющих автоматизации тестирования с Selenium, ведь именно отчеты обеспечивают наибольшую наглядность процесса автоматизированного тестирования. Отчеты, которые выдают корректную информацию в сжатой и понятной форме, можно отправить заинтересованным сторонам, чтобы они были в курсе прогресса на фронте тестирования. Интегрировать отчеты с автоматизацией тестирования на Selenium с помощью PyTest можно с помощью пакета pytest-html. Отчеты о тестах, сгенерированные с pytest-html, предоставляют визуальный контент для легкого сравнения результатов. Сгенерировать отчеты для тестов Selenium можно без особых усилий в PyTest. С помощью API, предлагаемых cloud Selenium Grid, таких как Lambda Test, можно построить более внушительную стратегию ведения отчетности для автоматизированного тестирования. Командная строка в помощь Ранее мы упомянули ряд IDE, которые можно использовать для разработки и выполнения автоматизированного тестирования на Python. Большинство фреймворков для тестирования оснащены тест-раннерами, которые позволяют выполнять тесты из терминала (командной строки). Если вы хорошо знакомы с Python, то комбинация IDE (например, Visual Studio Code) и тест-раннера поможет сделать эту работу за вас! Просто поставьте в IDE необходимые плагины для популярных фреймворков тестирования (например, PyTest, Behavior и т.д.). Теперь вы полностью готовы к насыщенному событиями путешествию в мир автоматизированного тестирования на Python! Подходит как для больших, так и для маленьких проектов В Python есть большая стандартная библиотека. Конструкции языка и объектно-ориентированный подход помогают создавать легко читаемый код, который выполняет необходимую работу. Простая номенклатура имен, которой следуют фреймворки (например, тестовые функции в PyTest должны начинаться с test_), облегчает работу по опознаванию тестовых функций. Начать автоматизировать тестирование на Python несложно, поскольку порог входа очень низкий. Язык подходит как для больших, так и для маленьких проектов, что делает его лучшим скриптовым языком для автоматизации тестирования. Простая интеграция с инструментами CI/CD Jenkins – один из самых популярных открытых инструментов для непрерывной интеграции (CI) и непрерывной доставки (CD). Travis CI, Circle CI, TeamCity, Bamboo, Azure Pipeline и т.д. – другие варианты, которые можно использовать вместо Jenkins, однако я все равно предпочитаю использовать Jenkins с «открытым исходным кодом». Freestyle и пайплайн Jenkins – два варианта оркестрации работ в проекте. В отличие от других языков, Python не требует «сборки» как таковой, но сильная экосистема делает Python, Selenium и Jenkins убийственной комбинацией. Экосистема Python содержит инструменты, которые можно легко интегрировать в Jenkins для генерации отчетов и тестирования, а также для отчетов по метрикам кода, такие как Pylint. Поскольку генерация отчетов PyTest может запускаться из самой командной строки, нет необходимости добавлять последовательность действий после сборки при использовании пайплайна Jenkins с PyTest.  Использовать Jenkins в связке с PyTest очень просто, так как переход от локальной среды выполнения к Jenkins подразумевает минимальное количество шагов (например, создание проекта, добавление параметров командной строки для выполнения и т. д.), что существенно упрощает переход! Jenkins предлагает прямой вариант создания проекта Maven, но помните про кривую обучения, если вы хотите использовать отчетность, что непосредственно к Jenkins не относится.  Вот и все! Несмотря на то, что выбор лучшего языка программирования для автоматизации тестирования с Selenium весьма субъективен, Python на сегодняшний день является лучшим скриптовым языком для автоматизации тестирования. Легко начать автоматизировать тесты с Python, поскольку широкий спектр его фреймворков можно использовать для модульного, кросс-браузерного тестирования и других его видов. Я уверен, что вам понравится автоматизированное тестирование на Python, как только вы начнете им пользоваться. Расскажите в комментариях о том, в связке с каким языком вы предпочитаете использовать Selenium, и как вы оцениваете его по сравнению с Python, бесспорным королем автоматизированного тестирования. Счастливого тестирования!В преддверии старта курса "Python QA Engineer" мы приглашаем всех желающих записаться на бесплатный двухдневный интенсив в рамках которого вы сможете изучить детальное планирование авто-тестирования на Python. Вместе с преподавателем сделаете разбор функциональности приложения, формализацию и описание тестовых сценариев, подготовите и настроите инфраструктуру и напишете авто-тесты.

===========
Источник:
habr.com
===========

===========
Автор оригинала: Himanshu Sheth
===========
Похожие новости: Теги для поиска: #_python, #_testirovanie_vebservisov (Тестирование веб-сервисов), #_python, #_selenium, #_avtomatizatsija_testirovanija (автоматизация тестирования), #_seleniumwebdriver, #_blog_kompanii_otus (
Блог компании OTUS
)
, #_python, #_testirovanie_vebservisov (
Тестирование веб-сервисов
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 12:30
Часовой пояс: UTC + 5