Сравнение BDD фреймворков Python: плюсы и минусы
- вторник, 16 июля 2019 г. в 00:20:43
Всем привет. Уже в этом месяце в ОТУС стартует курс "Python QA Engineer". В преддверии старта данного курса делимся с вами переводом интересного материала.
Почти все основные языки программирования имеют фреймворки для BDD тестирования, и Python не исключение. И по факту, у него их несколько! Итак, как их сравнить и какой из них лучший? Попробуем разобраться.
behave один из самых популярных BDD фреймворков питона. Несмотря на то, что он официально не является частью проекта Cucumber, его функционал достаточно схож с фреймворками Cucumber.
pytest-bdd – это плагин для pytest, который позволяет пользователями писать тесты в виде feature-файлов Gherkin вместо тестовых функций. Поскольку он интегрирован в pytest, он может работать с любыми другими pytest плагинами, такими как pytest-html для создания красивых отчетов и pytest-xdist для параллельного тестирования. Он также использует фикстуры pytest для инъекции зависимостей.
radish – это BDD фреймворк с изюминкой: он добавляет новый синтаксис в язык Gherkin. Особенности языка, такие как циклы сценариев, предварительные условия сценариев и константы делают Gherkin в radish более программным для тестовых кейсов.
lettuce – еще один «овощной» BDD Python-фреймворк, который известен вот уже несколько лет. Однако его сайт и код давно не обновлялись.
freshen один из самых первых фреймворков для BDD-тестирования на Python. Он был плагином для nose. Однако и freshen и nose больше не поддерживаются, и на странице их документации ясно сказано использовать другие фреймворки.
Ни один из приведенных фреймворков не идеален, однако у многих из них есть существенные преимущества. В целом, я бы порекомендовал использовать pytest-bdd, поскольку он имеет все преимущества сильных сторон pytest. Я считаю, что pytest – это один из лучших фреймворков для тестирования на любом языке из-за его лаконичности, фикстур, assert’ов и плагинов. 2018 Python Developers Survey показал, что pytest является самым популярным фреймворком для тестирования и на Python. Несмотря на то, что pytest-bdd не выглядит настолько «отполированным», как behave, я считаю, что некоторые TLC из комьюнити с открытым исходным кодом в силах это исправить.
И еще немного рекомендаций:
А какой ваш любимый фреймворк для BDD? Пожалуйста, поделитесь в комментариях!