HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: тестировщик, автоматизация тестирования, bdd, тест-фреймворки, gherkin, pytest-bdd, lettuce, freshen, radish, behave</p>
1 <p>Теги: тестировщик, автоматизация тестирования, bdd, тест-фреймворки, gherkin, pytest-bdd, lettuce, freshen, radish, behave</p>
2 <p><strong>BDD-фреймворки автоматизации</strong>существуют в любом языке программирования, и Python - не исключение. В этой статье мы сравним основные из них.</p>
2 <p><strong>BDD-фреймворки автоматизации</strong>существуют в любом языке программирования, и Python - не исключение. В этой статье мы сравним основные из них.</p>
3 <h2>behave</h2>
3 <h2>behave</h2>
4 <p>Пожалуй, behave является одним из наиболее популярных BDD-фреймворков для Python. Официально он не является частью проекта Cucumber, однако работает похоже.</p>
4 <p>Пожалуй, behave является одним из наиболее популярных BDD-фреймворков для Python. Официально он не является частью проекта Cucumber, однако работает похоже.</p>
5 <p><strong>Материалы</strong>: -<a>техническая документация</a>; -<a>проект на GitHub</a>.</p>
5 <p><strong>Материалы</strong>: -<a>техническая документация</a>; -<a>проект на GitHub</a>.</p>
6 <p><strong>Плюсы</strong>: - полная поддержка Gherkin; - возможность интеграции с Flask и Django; - прекрасное решение для практик BDD; - хорошая документация; - функции и фикстуры окружений; - поддержка PyCharm Professional Edition.</p>
6 <p><strong>Плюсы</strong>: - полная поддержка Gherkin; - возможность интеграции с Flask и Django; - прекрасное решение для практик BDD; - хорошая документация; - функции и фикстуры окружений; - поддержка PyCharm Professional Edition.</p>
7 <p>Из минусов хотелось бы отметить отсутствие поддержки параллельного запуска (для этого требуется побочный фреймворк<a>behave-parallel</a>).</p>
7 <p>Из минусов хотелось бы отметить отсутствие поддержки параллельного запуска (для этого требуется побочный фреймворк<a>behave-parallel</a>).</p>
8 <h2>pytest-bdd</h2>
8 <h2>pytest-bdd</h2>
9 <p>Не что иное, как плагин для<strong>pytest</strong>, позволяющий писать тесты не как тест-функции, а как фича-файлы<strong>Gherkin</strong>. За счёт интеграции с pytest фреймворк способен работать с любыми pytest-плагинами, к примеру,<strong>pytest-html</strong>для создания красивых отчётов или<strong>pytest-xdist</strong>для параллельного тестирования. Кроме того, фреймворк использует для внедрения зависимостей фикстуры pytest .</p>
9 <p>Не что иное, как плагин для<strong>pytest</strong>, позволяющий писать тесты не как тест-функции, а как фича-файлы<strong>Gherkin</strong>. За счёт интеграции с pytest фреймворк способен работать с любыми pytest-плагинами, к примеру,<strong>pytest-html</strong>для создания красивых отчётов или<strong>pytest-xdist</strong>для параллельного тестирования. Кроме того, фреймворк использует для внедрения зависимостей фикстуры pytest .</p>
10 <p><strong>Материалы</strong>: -<a>документация</a>; -<a>проект на GitHub</a>.</p>
10 <p><strong>Материалы</strong>: -<a>документация</a>; -<a>проект на GitHub</a>.</p>
11 <p><strong>Преимущества</strong>: - полная совместимость с pytest и его основными плагинами; - широкое сообщество pytest; - фикстуры; - вы можете фильтровать и запускать тесты вместе с другими тестами pytest; - вы можете легко распределять через conftest.py определения шагов и перехватчики; - есть возможность лучше управляться с табличными данными, если речь идёт о DDT-тестировании; - поддержка PyCharm Professional Edition.</p>
11 <p><strong>Преимущества</strong>: - полная совместимость с pytest и его основными плагинами; - широкое сообщество pytest; - фикстуры; - вы можете фильтровать и запускать тесты вместе с другими тестами pytest; - вы можете легко распределять через conftest.py определения шагов и перехватчики; - есть возможность лучше управляться с табличными данными, если речь идёт о DDT-тестировании; - поддержка PyCharm Professional Edition.</p>
12 <p><strong>Недостатки</strong>: - шаги шаблона сценария необходимо парсить другим образом; - модули определения шагов должны иметь декларации, явно заданные для фича-файлов (посредством функций @scenario или scenarios).</p>
12 <p><strong>Недостатки</strong>: - шаги шаблона сценария необходимо парсить другим образом; - модули определения шагов должны иметь декларации, явно заданные для фича-файлов (посредством функций @scenario или scenarios).</p>
13 <h2>radish</h2>
13 <h2>radish</h2>
14 <p>Этот BDD-фреймворк имеет изюминку, которая заключается в добавлении в язык Gherkin нового синтаксиса. А такие особенности, как предусловия сценариев, константы и петли сценариев делают radish-вариант Gherkin более удобным для test cases.</p>
14 <p>Этот BDD-фреймворк имеет изюминку, которая заключается в добавлении в язык Gherkin нового синтаксиса. А такие особенности, как предусловия сценариев, константы и петли сценариев делают radish-вариант Gherkin более удобным для test cases.</p>
15 <p><strong>Материалы</strong>: -<a>документация</a>; -<a>проект на GitHub</a>.</p>
15 <p><strong>Материалы</strong>: -<a>документация</a>; -<a>проект на GitHub</a>.</p>
16 <p><strong>Плюсы</strong>: - расширения языка позволяют лучше писать тесты; - хорошая документация; - определения шагов и фича-файлы получаются очень чистыми.</p>
16 <p><strong>Плюсы</strong>: - расширения языка позволяют лучше писать тесты; - хорошая документация; - определения шагов и фича-файлы получаются очень чистыми.</p>
17 <p><strong>Минусы</strong>: - количество расширений ограничено. - дополнения к синтаксису Gherkin могут понравиться не всем.</p>
17 <p><strong>Минусы</strong>: - количество расширений ограничено. - дополнения к синтаксису Gherkin могут понравиться не всем.</p>
18 <h2>lettuce</h2>
18 <h2>lettuce</h2>
19 <p>Очередной "овощной" Python BDD-фреймворк, известный уже много лет. Правда, код и сайт давненько не обновлялись.</p>
19 <p>Очередной "овощной" Python BDD-фреймворк, известный уже много лет. Правда, код и сайт давненько не обновлялись.</p>
20 <p><strong>Материалы</strong>: -<a>проект на GitHub</a>.</p>
20 <p><strong>Материалы</strong>: -<a>проект на GitHub</a>.</p>
21 <p><strong>Достоинства</strong>: - надёжность, проверенная временем; - код проще.</p>
21 <p><strong>Достоинства</strong>: - надёжность, проверенная временем; - код проще.</p>
22 <p><strong>Недостатки</strong>: - проигрывает другим фреймворкам в плане обилия фич; - по всей видимости, поддержка не очень активна.</p>
22 <p><strong>Недостатки</strong>: - проигрывает другим фреймворкам в плане обилия фич; - по всей видимости, поддержка не очень активна.</p>
23 <h2>freshen</h2>
23 <h2>freshen</h2>
24 <p>Когда-то freshen был плагином для<strong>nose</strong>и одним из BDD-фреймворков для Python. Однако сегодня<strong>ни nose, ни freshen, более не поддерживаются</strong>, а в их документации сказано, что лучше использовать другие фреймворки.</p>
24 <p>Когда-то freshen был плагином для<strong>nose</strong>и одним из BDD-фреймворков для Python. Однако сегодня<strong>ни nose, ни freshen, более не поддерживаются</strong>, а в их документации сказано, что лучше использовать другие фреймворки.</p>
25 <h2>Что же выбрать?</h2>
25 <h2>Что же выбрать?</h2>
26 <p>Ни один из перечисленных фреймворков идеальным не является, хотя у некоторых из них есть явные преимущества. Один из оптимальных вариантов -<strong>pytest-bdd</strong>, ведь он позволит вам извлечь пользу из сильных сторон pytest. А ещё он хорош за счёт выразительности, ассертов, фикстур, плагинов. К тому же, в<a>опросе Python-разработчиков за 2018 год</a>сказано, что pytest лидирует с большим отрывом.</p>
26 <p>Ни один из перечисленных фреймворков идеальным не является, хотя у некоторых из них есть явные преимущества. Один из оптимальных вариантов -<strong>pytest-bdd</strong>, ведь он позволит вам извлечь пользу из сильных сторон pytest. А ещё он хорош за счёт выразительности, ассертов, фикстур, плагинов. К тому же, в<a>опросе Python-разработчиков за 2018 год</a>сказано, что pytest лидирует с большим отрывом.</p>
27 <p>Что касается<strong>общих рекомендаций</strong>, то они следующие: - Хотите надёжной и стабильной работы и доступ к самому большому сообществу? Используйте<strong>behave</strong>. - Интересует интеграция с другими плагинами, если уже есть pytest-тесты, либо желаете запускать тесты параллельно? Ваш выбор -<strong>pytest-bdd</strong>. - Интересует программный контроль тестирования на уровне Gherkin? Вам подойдёт<strong>radish</strong>.</p>
27 <p>Что касается<strong>общих рекомендаций</strong>, то они следующие: - Хотите надёжной и стабильной работы и доступ к самому большому сообществу? Используйте<strong>behave</strong>. - Интересует интеграция с другими плагинами, если уже есть pytest-тесты, либо желаете запускать тесты параллельно? Ваш выбор -<strong>pytest-bdd</strong>. - Интересует программный контроль тестирования на уровне Gherkin? Вам подойдёт<strong>radish</strong>.</p>
28 <p>Что касается lettuce и freshen, то их лучше просто не использовать.</p>
28 <p>Что касается lettuce и freshen, то их лучше просто не использовать.</p>
29 <p><a>Источник</a></p>
29 <p><a>Источник</a></p>
30  
30