Сравнение BDD фреймворков Python: плюсы и минусы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Всем привет. Уже в этом месяце в ОТУС стартует курс "Python QA Engineer". В преддверии старта данного курса делимся с вами переводом интересного материала.



Почти все основные языки программирования имеют фреймворки для BDD тестирования, и Python не исключение. И по факту, у него их несколько! Итак, как их сравнить и какой из них лучший? Попробуем разобраться.


behave


behave один из самых популярных BDD фреймворков питона. Несмотря на то, что он официально не является частью проекта Cucumber, его функционал достаточно схож с фреймворками Cucumber.


Источники:


  • Python Testing 101: behave
  • Behavior-Driven Python
  • Проект behave на GitHub
  • Проект behave-parallel на GitHub
  • Документация behave

Логотип



Плюсы:


  • Полностью поддерживает язык Gherkin;
  • Функционал среды и фикстуры (fixture) делают легкими установку и удаление;
  • Есть интеграция с Django и Flask;
  • Популярен у BDD питонистов;
  • Хорошая документация и руководства;
  • Есть поддержка PyCharm Professional Edition.

Минусы:


  • Нет поддержки параллельного исполнения, для этого нужен отдельный фреймворк behave-parallel;
  • behave – это standalone фреймворк;
  • Обмен поступками (steps) между feature-файлами может принести много хлопот.

pytest-bdd


pytest-bdd – это плагин для pytest, который позволяет пользователями писать тесты в виде feature-файлов Gherkin вместо тестовых функций. Поскольку он интегрирован в pytest, он может работать с любыми другими pytest плагинами, такими как pytest-html для создания красивых отчетов и pytest-xdist для параллельного тестирования. Он также использует фикстуры pytest для инъекции зависимостей.


Источники:


  • Python Testing 101: pytest-bdd
  • Python Testing 101: pytest
  • Проект pytest-bdd на GitHub
  • Документация для pytest-bdd
  • pytest.org

Логотип



Плюсы:


  • Полностью совместим с pytest и его основными плагинами;
  • Можно пользоваться всеми преимуществами комьюнити pytest;
  • Фикстуры – отличный способ управлять контекстом между поступками;
  • Тесты могут быть отфильтрованы и выполнены вместе с другими тестами pytest;
  • Определениями поступков и хуков можно легко делиться с помощью conftest.py;
  • Табличные данные могут лучше обрабатываться для data-driven тестов;
  • Отличная онлайн документация и туториалы;
  • Есть поддержка PyCharm Professional Edition.

Минусы:


  • Модули определения поступков должны иметь явные объявления для feature-файлов (через “@scenario” или функцию “scenarios”);
  • План сценариев поведения должен обрабатываться по-другому.

radish


radish – это BDD фреймворк с изюминкой: он добавляет новый синтаксис в язык Gherkin. Особенности языка, такие как циклы сценариев, предварительные условия сценариев и константы делают Gherkin в radish более программным для тестовых кейсов.


Источники:


  • Проект radish на GitHub;
  • radish-bdd.io
  • Документация radish

Логотип



Плюсы:


  • Расширения языка Gherkin дают возможность тестировщикам писать тесты лучше;
  • Сайт, документация и логотип – все на месте;
  • Feature-файлы и определения поступков получаются очень понятными.

Минусы:


  • Является standalone фреймворком с ограниченным количеством расширений;
  • Пуристам BDD могут прийтись не по душе добавления в синтаксис Gherkin.

lettuce


lettuce – еще один «овощной» BDD Python-фреймворк, который известен вот уже несколько лет. Однако его сайт и код давно не обновлялись.


Источники:


  • Проект lettuce на GitHub;
  • lettuce.it.

Логотип:



Плюсы:


  • Простой код;
  • Проверенный и хороший.

Минусы:


  • Не такой богатый функционал, как в других фреймворках;
  • Похоже, у него нет активной постоянной поддержки.

freshen


freshen один из самых первых фреймворков для BDD-тестирования на Python. Он был плагином для nose. Однако и freshen и nose больше не поддерживаются, и на странице их документации ясно сказано использовать другие фреймворки.


Рекомендации


Ни один из приведенных фреймворков не идеален, однако у многих из них есть существенные преимущества. В целом, я бы порекомендовал использовать pytest-bdd, поскольку он имеет все преимущества сильных сторон pytest. Я считаю, что pytest – это один из лучших фреймворков для тестирования на любом языке из-за его лаконичности, фикстур, assert’ов и плагинов. 2018 Python Developers Survey показал, что pytest является самым популярным фреймворком для тестирования и на Python. Несмотря на то, что pytest-bdd не выглядит настолько «отполированным», как behave, я считаю, что некоторые TLC из комьюнити с открытым исходным кодом в силах это исправить.
И еще немного рекомендаций:


  • Используйте behave, если вам нужен надежный, чистый опыт разработки и большое комьюнити.
  • Используйте pytest-bdd, если вам нужна интеграция с другими плагинами, которые уже содержат кучу pytest тестов, или если вам нужно параллельное выполнение тестов.
  • Используйте radish, если вы хотите больше программного контроля над тестированием на уровне Gherkin.
  • Не используйте lettuce и freshen.

А какой ваш любимый фреймворк для BDD? Пожалуйста, поделитесь в комментариях!

Источник: https://habr.com/ru/company/otus/blog/460046/


Интересные статьи

Интересные статьи

Мы помогаем IT-специалистам найти работу, которую они полюбят. Но у всех мест есть свои недостатки, которые нужно понимать перед попыткой трудоустройства. Нет ничего хуже...
Эпидемия уже идёт на спад, но у меня получилось подхватить заразу на излёте пандемии. Не далее, как позавчера, пришла новость о регистрации вакцины новомодного вируса, но мой орга...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.
Изображение: Pexels В современном интернете, где все острее встает вопрос обеспечения анонимности, многие люди начинают задумываться о том, какие инструменты для этого им использовать. Зде...
Согласно многочисленным исследованиям поведения пользователей на сайте, порядка 25% посетителей покидают ресурс, если страница грузится более 4 секунд.