Самый популярный фреймворк python для тестов
Тестовые инструменты: Тестовая автоматизация 2019 Лучший Python Framework
Pytest
pytestДля различных программных тестов оно представляет собой Python Test Python для автоматизации тестирования. Открытый исходный код и Easy-to-Suck, инструмент доступен для команды QA, команды разработчиков и личной практики и проекты с открытым исходным кодом. Например, «утвержденные перезаписи» полезные функции, большинство проектов в Интернете, включая Dropbox и Mozilla, были переключены с Unittest (Pyunit) в Pтойду. Давайте обсудим особое место этого Python Framework.
В дополнение к Pythonpytest не требует каких-либо сложных вещей.
преимущество
- В тестовом сообществе Python разработчики включены в большой класс до наступления Ptyest. Тем не менее, Pytest привел революцию, потому что она делает тестовый комплект, чем ранее компактный.
- Другие тестовые инструменты требуют, чтобы разработчики или тестеры использовать отладчик или проверить журнал и обнаружить источник определенного значения. Pтойцы могут помочь вам написать тестовые случаи, чтобы вы могли хранить все значения в тестовых случаях, и, наконец, уведомить, какое значение не удается, а значение подтверждается.
- Тест легче писать и понимать, потому что код не должен быть таким большим.
- Приспособление - это функция, которая может использоваться путем добавления параметров к функции тестирования.
- Разработчики Pytest выпустили некоторые полезные плагины для расширения рамы. Например, Pytest-Xdist можно использовать для выполнения параллельных тестов без использования различных тестовых бегунов. Тестирование устройства также может быть параметризовано без копирования любого кода.
- Предоставьте некоторые особые процедуры разработчикам, что облегчает тестовое дело, не легко ошибка. Код также становится короче, легко понять.
недостаток
Pytest использует особую рутину этот факт, что вы должны сделать компромисс в совместимости. Вы сможете легко писать тестовые случаи, но вы не сможете использовать эти тесты с любыми другими тестовыми каркасами.
Для написания функций тестовых случаев и разработчиков комплексных структур разработки, он лучше, чем в Unittest, но если ваша цель - разработать простую структуру, его преимущество немного похоже на робот.
Неизвестный, также известный как Pyunit
Unittest или Pyunit - это стандартная система автоматизации тестирования для модульных тестов, включенных в Python. Он вдохновлен высотой Junit. Метод утверждения и все процедуры очистки и настройки предоставляются тестовым фактором базового класса. Название каждого метода в подклассе тестовогостата начинается с «теста». Это позволяет им работать как тестовый случай. Вы можете использовать метод нагрузки и класс Testsuite для группы и загрузить ваш тест. Вы можете использовать их для создания пользовательских тестовых бегунов. КакSelenium testing with JUnitТо же самое, Unittest также может использовать отчет о Unittest-SML и генерировать отчет XML.
преимущество
В рамках стандартной библиотеки Python есть несколько преимуществ для неисполнения.
- Разработчики не нужно устанавливать какие-либо другие модули.
- Unittest - это производное XUNIT, и его принцип работы аналогичен другим структурам Xunit. Люди, у которых нет мощного фона Python, также просты в использовании.
- Вы можете запустить один тестовый корпус более простым способом. Что вам нужно сделать, это указать имя на терминале. Выход также очень прост, что делает рамки более гибкой при выполнении тестовых случаев.
- Отчет о тестировании генерируется в нескольких миллисекундах.
недостаток
- Как правило, Snake_Case используется для названия кода Python. Но поскольку эта структура вдохновлена JUNIT, традиционный метод именований камеры все еще существует. Это может быть запутано.
- Целью тестового кода иногда неясна, потому что он слишком много поддерживает абстракцию.
- Нужен больше кода.
Хотя Unittest - это Framework Test Automation Test Automation, его принцип работы и соглашение об именах немного отличается от стандартного кода Python, и есть слишком много кода, что делает его неприятной структурой автоматизации тестирования Python. Ссылаться на:better automation code。
Behave
Мы все понимаем поведенческую разработку драйвера, которое является последним методом развития программного обеспечения, поощряющим разработчикам, бизнес-участникам и качественным аналитикам для совместной работы. Вести себя еще один лучший тестовый каркас Python, которая позволяет команде выполнять BDD-тесты без какой-либо сложности. Природа рамки очень похожа на специфику и окумба. Тестовый случай написан на простом читаемом языке, а затем вставляю в код во время выполнения. Поведение разработано поведенческой спецификацией, то другие тестовые схемы используют эти шаги.
преимущество
-
Поведение системы выражается полуфагистыми языками и доменными словами, чтобы сохранить поведение в организации.
Команда разработки, которая координирует различные модули с аналогичными функциями.
недостаток
- Подходит только для тестирования черного ящика.
Вести себя (Python Framework) лучше всего для тестирования черного ящика. Веб-тест - хороший пример, потому что створки можно описать на простом языке. Однако для тестов интеграции или модульных испытаний поведение не является хорошим выбором, потому что детали будут вызывать только сложность сложных тестовых сценариев. Разработчики и тестеры рекомендуют pteest-bdd. Это альтернатива, потому что он использует все преимущества в Pтойте и реализует его для тестирования приводных поведенческих сцен.
Ссылаться на:Behave with Selenium
Салат является еще одним простым и простой в использовании инструмент автоматизации питания поведения на основе огурца и питона. Основная цель салата состоит в том, чтобы сосредоточиться на общей задаче разработки поведенческого привода, что облегчает процесс и интереснее.
преимущество
- Хорошо, так же, как и любая другая тестовая структура BDD, салат позволяет разработчикам создавать несколько сцен и описывать эти функции в простом естественном языке.
- Команда Dev и Qa были должным образом скоординированы, потому что спецификации похожи.
- Для тестирования Black Box салат очень полезен для тестирования тестирования тестовых случаев, ориентированных на поведение.
недостаток
Существует только одна недостатка с использованием салата в качестве Python Framework. Чтобы успешно провести тест на поведенческую управляемость, команда развития, QA и заинтересованные стороны должны общаться. Отсутствие или коммуникационное разрыв сделает процесс нечеткой и может быть выдан из любой команды.
Нет лучшей альтернативы pteest-bdd. Все мощные особенности Pтойных, таких как Compact, и простой для понимания кода, реализуются в этой структуре и сочетают в себе подробный уровень теста поведенческого привода.
Справка
Robot Framework
преимущество
- Использовать методы испытаний по ключевым словам, чтобы легко создавать читаемые тестовые случаи, помогая тестерам, что облегчает процесс автоматизации.
- Синтаксис тестовых данных может быть легко использован.
- Он состоит из общего назначения и тестовых библиотек с огромной экосистемой, которая может использоваться в отдельных предметах.
- Рама обладает высокой степенью масштабируемости, поскольку у него много API.
- Robot Framework помогает вам пройтиSelenium GridЗапустите параллельный тест. Однако эта функция не встроена.
недостаток
- Создание пользовательского HTML-отчета сложно. Тем не менее, вы все еще можете использовать рамки робота для представления коротких отчетов в формате XUNIT.
- Недостаточный параллельный тест.
- Для тех, кто знаком с Python, потому что не удобно использовать некоторые функции Python
И разработка тестовых библиотек усложняет простые вопросы и имеет более высокие расходы на обслуживание. Но это все еще подходит для начинающих.
Если вы являетесь инициатором в автоматизации и меньшем опыте, используйте робот как верхнюю структуру тестирования Python, чем Pteest или Pyunit, потому что она имеет богатую библиотеку сборки и включает в себя использование простых для тестирования DSL. Однако, если вы хотите разработать сложную структуру автоматизации, лучше всего переключиться на Pтойку или любую другую структуру, связанную с кодом Python.
Если вы новая рука робота-рамки, здесь есть документ, который поможет вам использовать его.Robot framework with SeleniumЗапустите свой первый автоматизированный скрипт.
резюме
В приведенной выше статье мы обсудили лучшие пять основ Python Frameworks для автоматизации тестирования в 2019 году на основе различных процедур испытаний. Хотя Ptyest, Robot Framework, Unittest используется для тестирования функциональных и единиц, но салат и ведут себя применяются только к тестам поведенческих драйверов. Согласно функции, мы можем сделать вывод, что Pytest - лучшее для функциональных тестирование. Однако, если вы новая рука теста на автоматизации на основе Python, Robot Framework - это хороший инструмент ввода. Хотя функция ограничена, это позволяет легко получить повод на трассу. Для BDD-тестов на основе Python салат и ведут себя одинаково хорошо, но если у вас уже есть опыт Pтойца, лучше всего использовать Pteest-BDD.
Если вы когда-нибудь думали: «С какого же языка программирования мне следует начать свое путешествие в тестирование?» Ваш ответ – Python. Но он подойдет не только начинающим! В недавнем опросе, который я провела в LinkedIn, мы видим, что среди опытных программистов 35% проголосовали за то, что Python является их самым любимым языком программирования (немного опередив всеми любимую Java, которая заняла 2-е место с 32%).
На протяжении многих лет Python действительно набирает обороты как среди тестировщиков, так и среди разработчиков, да и в целом является самым динамично развивающимся языком программирования (как видно на диаграмме трендов Stack Overflow), и мы прекрасно понимаем, что это значит. Популярность = релевантность!
К концу этой статьи я ставлю своей целью дать вам понимание того, насколько мощным является язык программирования Python и какой фреймворк для тестирования лучше всего подойдет вашему проекту исходя из его потребностей.
Что хорошего в Python для автоматизации тестирования?
Python - это язык программирования с открытым исходным кодом, который увидел свет в 1991 году, чтобы явить миру интуитивно понятный, простой, удобочитаемый, элегантный и наименее нагроможденный язык программирования. И когда дело доходит до тестирования, такие качества необходимы, особенно когда в команде есть ручные тестировщики (которые не обязательно владеют навыками программирования), но сейчас переходят к автоматизации и могут радоваться быстрой кривой обучения Python для оперативного написания скриптов.
Есть довольно много причин, по которым популярность Python растет в области автоматизации тестирования и версий, почему он считается лучшим вариантом для нее. Среди них вы найдете: Дзен Python (19 основополагающих принципов философии проектирования на Python), удобство для начинающих, но мощность для профессионалов; Python – одновременно объектно-ориентированный и функциональный, у него есть большая библиотека пакетов для тестирования, серьезное сообщество по всему миру и многое другое! Я рекомендую прочитать вам чуть больше об этом в блоге AutomationPanda.
Фреймворк для тестирования на Python, который вам подходит
С ростом применения Python растет и популярность фреймворков для тестирования на его основе. Поначалу может быть неясно, какой инструмент из всего многообразия следует выбрать, поскольку у каждого из них есть свои плюсы и минусы. Тем не менее, у каждого проекта и организации, есть свои требования и ограничения, поэтому нам нужно учитывать их все при выборе инструмента, который подойдет нам лучше всего. Чтобы лучше разобраться в этом вопросе, я рекомендую вам прочитать эти статьи:
И, конечно, зачем же нужны списки с плюсами и минусами, как ни для того, чтобы собрать важные сведения об инструментах в одном месте! Итак, давайте рассмотрим 8 лучших фреймворков для тестирования на Python и рассмотрим как их преимущества, так и недостатки, чтобы вам было проще выбрать идеальный фреймворк для тестирования.
Преимущества и недостатки 8 лучших фреймворков для тестирования на Python
Что такое тестовый фреймворк Python?
Тестовый фреймворк Python – это набор инструментов и библиотек для автоматизации тестирования, разработанных при помощи Python. Он упрощает поддержку тестов, делает их более читаемыми, создает отчеты в одинаковом формате, упрощает запуск тестов и многое другое.
Давайте рассмотрим список наиболее популярных тестовых фреймворков Python:
1. Behave
Этот фреймворк очень похож на Cucumber и SpecFlow. В нем все тестовые сценарии пишутся на простом, легко понятном языке и подкрепляются кодом Python. Поведение кода определяется соответствующими спецификациями. Кроме того, Behave позволяет повторно использовать определенные шаги (steps) в других сценариях использования.
Необходимые условия для использования Behave:
Вы можете использовать Behave, если обладаете базовыми знаниями Python.
Перед установкой Behave выполните следующие действия:
- Установите любую версию Python выше 2.7.14
- Установите Python Package Manager или pip
- Установите Pycharm или подобную IDE
Основные преимущества Behave:
- В Behave поведение системы определяется полуформальным языком и предполагает использование словаря предметной области. Это облегчает взаимодействие между заинтересованными сторонами, участвующими в проекте по разработке ПО.
- Обеспечивает эффективную координацию работы команд разработчиков над различными модулями с некоторыми похожими функциями.
- Имеются стандартные блоки для выполнения самых разных тест-кейсов.
- Все спецификации представлены в одинаковом формате. Это позволяет менеджерам лучше понять результаты, полученные разработчиками и QA-инженерами.
Недостатки Behave:
- Оптимально работает только для тестирования методом черного ящика.
- Не самый лучший вариант для модульного или интеграционного тестирования, поскольку многословность, присущая этим тестам, может привести к сложностям в тестовых сценариях.
2. Lettuce
Lettuce также чрезвычайно эффективен, когда речь идет о BDD тестировании. Его функционал, как и функционал Behave, очень схож с фреймворком Cucumber. В первую очередь, Lettuce хорош для облегчения выполнения обычных задач структуры BDD.
Необходимые условия для использования Lettuce:
Перед установкой Lettuce выполните следующие действия:
- Установите Python 2.7.14 или выше
- Установите Pycharm или подобную IDE
- Установите Python Package Manager или pip
Основные преимущества Lettuce:
- Позволяет разработчикам создавать больше одного сценария и описывать его характеристики простым, естественным языком.
- Обеспечивает, как и в случае с Behave, продуктивную координацию благодаря одинаковому формату спецификаций.
Недостатки Lettuce:
- Для того чтобы быть действительно функциональным, Lettuce (как и любому другому BDD-фреймворку) необходима тщательно проработанная система взаимодействия между разработчиками, QA-инженерами и представителями бизнеса. Здесь нет места для двусмысленности.
3. Robot Framework
Необходимые условия для использования Robot Framework:
Перед установкой Robot Framework выполните следующие действия:
- Установите Python 2.7.14 или выше
- Установите Python Package Manager или pip
- Установите Pycharm или подобную IDE
Основные преимущества Robot Framework:
- Упрощает автоматизацию, помогая тестировщикам легко создавать удобочитаемые тест-кейсы.
- Позволяет легко использовать синтаксис тестовых данных (test data syntax).
- Оснащен обширной экосистемой, состоящей из универсальных инструментов и тестовых библиотек, каждая из которых может индивидуально использоваться в отдельных проектах.
- Благодаря множеству API он очень расширяемый.
- Robot Framework позволяет пользователям запускать параллельные тесты через Selenium grid. Обратите внимание, что эта функция не является встроенной.
Недостатки Robot Framework:
- Хотя Robot Framework довольно удобен в использовании, при создании кастомизированных HTML-отчетов могут возникнуть некоторые сложности. Тем не менее, он позволяет представлять короткие отчеты в формате xUnit.
- Также не слишком подходит для параллельного тестирования.
Выбор подходящего тестового фреймворка на 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.
Посмотрим на базовый шаблон для написания теста, который зависит от параметра командной строки:
Если хотите рассмотреть этот шаблон подробнее, вот вам ссылка на официальную документацию.
Плюсы
Главный плюс этой конфигурации — легкость в применении, расширяемость, плюс возможность быстро изменить структуру автоматизированных тестов. Вы можете быстро настроить систему отчётов, допустим, подключить 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.
Другие примеры кода здесь.
Плюсы
Преимущества такие же, что и в случае с Robot Framework — возможность писать автотесты силами сотрудников, не знающих язык программирования. Соответственно, характерны и минусы, ведь без умения погружаться в код на Python писать тесты будет очень сложно. В результате — долго и неэффективно. Зато есть подобие фикстур из PyTest, позволяющих модифицировать поведение функции, не меняя её код, что очень удобно. Вдобавок к этому, Behave без проблем встраивается в серверы непрерывной интеграции, а также формирует понятные и красивые отчёты.
Минусы
Об основных минусах мы уже сказали, но есть и некоторые особенности. Одна из них заключается в отсутствии возможности распараллелить автоматизированные тесты, что критично, если мы говорим о серьёзной автоматизации. В принципе, разработчики Behave планируют её добавить.
Выбираем фреймворк для тестирования
Невозможно однозначно сказать, какой фреймворк лучше, ведь каждый подходит для решения определённых задач с учётом человеческих ресурсов и фактических потребностей проекта.
Как правило, связку Python + Robot Framework либо Python + Behave используют, если: 1. В команде много QA-специалистов и мало SDET либо автоматизаторов. В результате автотестов не хватает, и их надо нарастить. Используя вышеназванную связку, автоматизаторы либо SDET программируют и следят за кодом, а QA пишут тест-кейсы и следят за покрытием. 2. Менеджмент плохо осведомлен о технической составляющей и желает отслеживать качество разрабатываемого продукта с помощью кода автотестов, написанных на естественном языке.
Что касается комбинации Python + PyTest + PageObject, то её, как правило, выбирают в большинстве остальных случаев, то есть чаще всего. Это та ситуация, когда специалисты умеют программировать и читать код, а менеджмент не особо интересуется тем, что происходит глубоко в приложении — ему достаточно ключевых результатов и показателей тестирования.
BDD-фреймворки автоматизации существуют в любом языке программирования, и Python — не исключение. В этой статье мы сравним основные из них.
behave
Пожалуй, behave является одним из наиболее популярных BDD-фреймворков для Python. Официально он не является частью проекта Cucumber, однако работает похоже.
— полная поддержка Gherkin;
— возможность интеграции с Flask и Django;
— прекрасное решение для практик BDD;
— функции и фикстуры окружений;
— поддержка PyCharm Professional Edition.
Из минусов хотелось бы отметить отсутствие поддержки параллельного запуска (для этого требуется побочный фреймворк behave-parallel ).
pytest-bdd
Не что иное, как плагин для pytest , позволяющий писать тесты не как тест-функции, а как фича-файлы Gherkin . За счёт интеграции с pytest фреймворк способен работать с любыми pytest-плагинами, к примеру, pytest-html для создания красивых отчётов или pytest-xdist для параллельного тестирования. Кроме того, фреймворк использует для внедрения зависимостей фикстуры pytest .
Преимущества :
— полная совместимость с pytest и его основными плагинами;
— широкое сообщество pytest;
— вы можете фильтровать и запускать тесты вместе с другими тестами pytest;
— вы можете легко распределять через conftest.py определения шагов и перехватчики;
— есть возможность лучше управляться с табличными данными, если речь идёт о DDT-тестировании;
— поддержка PyCharm Professional Edition.
— шаги шаблона сценария необходимо парсить другим образом;
— модули определения шагов должны иметь декларации, явно заданные для фича-файлов (посредством функций @scenario или scenarios).
radish
Этот BDD-фреймворк имеет изюминку, которая заключается в добавлении в язык Gherkin нового синтаксиса. А такие особенности, как предусловия сценариев, константы и петли сценариев делают radish-вариант Gherkin более удобным для test cases.
— расширения языка позволяют лучше писать тесты;
— определения шагов и фича-файлы получаются очень чистыми.
— количество расширений ограничено.
— дополнения к синтаксису Gherkin могут понравиться не всем.
lettuce
Очередной «овощной» Python BDD-фреймворк, известный уже много лет. Правда, код и сайт давненько не обновлялись.
Достоинства :
— надёжность, проверенная временем;
— проигрывает другим фреймворкам в плане обилия фич;
— по всей видимости, поддержка не очень активна.
freshen
Когда-то freshen был плагином для nose и одним из BDD-фреймворков для Python. Однако сегодня ни nose, ни freshen, более не поддерживаются , а в их документации сказано, что лучше использовать другие фреймворки.
Что же выбрать?
Ни один из перечисленных фреймворков идеальным не является, хотя у некоторых из них есть явные преимущества. Один из оптимальных вариантов — pytest-bdd , ведь он позволит вам извлечь пользу из сильных сторон pytest. А ещё он хорош за счёт выразительности, ассертов, фикстур, плагинов. К тому же, в опросе Python-разработчиков за 2018 год сказано, что pytest лидирует с большим отрывом.
Что касается общих рекомендаций , то они следующие:
— Хотите надёжной и стабильной работы и доступ к самому большому сообществу? Используйте behave .
— Интересует интеграция с другими плагинами, если уже есть pytest-тесты, либо желаете запускать тесты параллельно? Ваш выбор — pytest-bdd .
— Интересует программный контроль тестирования на уровне Gherkin? Вам подойдёт radish .
Читайте также: