Прелести Pytest: Pytest-BDD

Говоря о возможностях Pytest, нельзя не вспомнить про Pytest-BDD, представляющий собой, по сути, полноценный инструмент автоматизации тестирования. Pytest-BDD — это вариация таких популярных фреймворков, как Cucumber либо Behave, однако Pytest-BDD сам по себе, поэтому его иногда называют Python Cucumber.

Вообще, BDD является довольно популярным подходом, который распространен среди различных команд, как опытных, так и тех, кто впервые работает с автоматизацией тестирования. Ключевая особенность BDD заключается в создании так называемых фича-файлов. При этом используется специальный синтаксис, Gherkin. Этот синтаксис дает возможность описывать фичи в следующем формате:

Далее превращаем это в компьютерный код с последующим выполнением.

Такие «фича-файлы» могут создавать любые члены команды. Таким образом новые фичи документируются посредством запуска тест-кода, что упрощает тестовую коммуникацию.

Но давайте посмотрим, как это работает с Pytest-BDD. Начнем с фича-файла, созданного по синтаксису Gherkin. Не будем далеко уходить от темы интернет-магазина и назовем нашу фичу store_login.feature. Она станет описывать, каким образом функционируют 2 специфических потока авторизации: невалидный и валидный:

Давайте учтем, что это, по сути, описательные сценарии. Идея заключается в том, что фичи могут создаваться не напрямую разработчиками тестов, а посредством коммуникации с дизайнерами, продактами и прочими заинтересованными членами команды.

Давайте глянем на внедрение наших шагов. Теперь тест-разработчик может создать файл test_store_login.py приблизительно следующего содержания:

Это показывает нам, как именно мы можем использовать BDD и шаги, описанные Gherkin, продолжая в то же время использовать известные Pytest-конструкции (фикстуры, добавление test_ к файлам для исполнения). При необходимости код можно доработать, к примеру, задействовав паттерн Page Object либо совместив шаги, но наша задача — подчеркнуть BDD-аспект данного сценария.

Чтобы выполнить тест, можно вызвать pytest test_store_login.py, в результате чего мы увидим результат. Кроме того, Pytest-BDD сгенерирует полезные отчеты в стиле Cucumber, что произойдет в дополнение к стандартной Pytest-отчетности. Также в шагах Gherkin доступны регулярные выражения и замещения.

Источник: https://simplythetest.tumblr.com/post/189048770415/pytest-the-awesome-parts-pytest-bdd.