Pytest-BDD на практике

В одной из предыдущих статей мы коснулись темы автоматизации тестирования с Pytest-BDD. Все это неплохо, однако даже если команды пожелают полностью перейти на BDD, со временем они обнаружат, что разработчики тестов пишут и управляют всем кодом автоматизации тестирования напрямую, включая как создание, так и управление фича-файлами. А это уже весьма обременительно, особенно если учесть, что разработчикам тестов совсем не нужна дополнительная нагрузка.

И вот в этой-то ситуации Pytest-BDD предстает перед нами во всей красе. Так как Pytest-BDD интегрирован в Pytest, появляется возможность: • писать тестовые фреймворки, которые смешивают BDD и обычные Pytest-тесты; • удалять использование BDD в случае рефакторинга в обычные Pytest-тесты.

К примеру, мы желаем убрать BDD-инструментарий, продолжая использовать функциональность Pytest. Как вариант — переписать тест на валидную авторизацию, при этом невалидная будет продолжать применение Pytest-BDD. В результате файл test_store_login.py будет выглядеть приблизительно следующим образом:

После команды pytest test_store_login.py оба теста будут запущены, причем для невалидной авторизации станет доступна дополнительная отчетность Pytest-BDD. Обратите внимание, что не надо манипулировать фича-файлом: его вообще можно убрать либо сохранить — на выполнение тестов автоматизации он не повлияет.

Таким образом, Pytest-BDD – весьма полезный плагин для работы с BDD и «Пайтон», причем он не ограничивает команду применением только BDD-подходов. Это не больше и не меньше «киллер-фича», которой не существует у многих других BDD-фреймворков. Ну и, конечно, это очередная веская причина использовать для автоматизации тестирования Pytest.

И еще несколько плюсов:

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

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