0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Говоря о возможностях Pytest, нельзя не вспомнить про<strong>Pytest-BDD,</strong>представляющий собой, по сути, полноценный инструмент автоматизации тестирования. Pytest-BDD - это вариация таких популярных фреймворков, как Cucumber либо Behave, однако Pytest-BDD сам по себе, поэтому его иногда называют<strong>Python Cucumber</strong>.</p>
1
<p>Говоря о возможностях Pytest, нельзя не вспомнить про<strong>Pytest-BDD,</strong>представляющий собой, по сути, полноценный инструмент автоматизации тестирования. Pytest-BDD - это вариация таких популярных фреймворков, как Cucumber либо Behave, однако Pytest-BDD сам по себе, поэтому его иногда называют<strong>Python Cucumber</strong>.</p>
2
<p>Вообще, BDD является довольно популярным подходом, который распространен среди различных команд, как опытных, так и тех, кто впервые работает с автоматизацией тестирования. Ключевая особенность BDD заключается в создании так называемых<strong>фича-файлов</strong>. При этом используется специальный синтаксис,<strong>Gherkin</strong>. Этот синтаксис дает возможность описывать фичи в следующем формате:</p>
2
<p>Вообще, BDD является довольно популярным подходом, который распространен среди различных команд, как опытных, так и тех, кто впервые работает с автоматизацией тестирования. Ключевая особенность BDD заключается в создании так называемых<strong>фича-файлов</strong>. При этом используется специальный синтаксис,<strong>Gherkin</strong>. Этот синтаксис дает возможность описывать фичи в следующем формате:</p>
3
<p>Далее превращаем это в компьютерный код с последующим выполнением.</p>
3
<p>Далее превращаем это в компьютерный код с последующим выполнением.</p>
4
<p>Такие "фича-файлы" могут создавать любые члены команды. Таким образом новые фичи документируются посредством запуска тест-кода, что упрощает тестовую коммуникацию.</p>
4
<p>Такие "фича-файлы" могут создавать любые члены команды. Таким образом новые фичи документируются посредством запуска тест-кода, что упрощает тестовую коммуникацию.</p>
5
<p>Но давайте посмотрим, как это работает с Pytest-BDD. Начнем с фича-файла, созданного по синтаксису Gherkin. Не будем далеко уходить от темы интернет-магазина и назовем нашу фичу<em>store_login.feature</em>. Она станет описывать, каким образом функционируют 2 специфических потока авторизации: невалидный и валидный:</p>
5
<p>Но давайте посмотрим, как это работает с Pytest-BDD. Начнем с фича-файла, созданного по синтаксису Gherkin. Не будем далеко уходить от темы интернет-магазина и назовем нашу фичу<em>store_login.feature</em>. Она станет описывать, каким образом функционируют 2 специфических потока авторизации: невалидный и валидный:</p>
6
<p>Давайте учтем, что это, по сути, описательные сценарии. Идея заключается в том, что фичи могут создаваться не напрямую разработчиками тестов, а посредством коммуникации с дизайнерами, продактами и прочими заинтересованными членами команды.</p>
6
<p>Давайте учтем, что это, по сути, описательные сценарии. Идея заключается в том, что фичи могут создаваться не напрямую разработчиками тестов, а посредством коммуникации с дизайнерами, продактами и прочими заинтересованными членами команды.</p>
7
<p>Давайте глянем на внедрение наших шагов. Теперь тест-разработчик может создать файл<em>test_store_login.py</em>приблизительно следующего содержания:</p>
7
<p>Давайте глянем на внедрение наших шагов. Теперь тест-разработчик может создать файл<em>test_store_login.py</em>приблизительно следующего содержания:</p>
8
<p>Это показывает нам, как именно мы можем использовать BDD и шаги, описанные Gherkin, продолжая в то же время использовать известные Pytest-конструкции (фикстуры, добавление test_ к файлам для исполнения). При необходимости код можно доработать, к примеру, задействовав паттерн Page Object либо совместив шаги, но наша задача - подчеркнуть BDD-аспект данного сценария.</p>
8
<p>Это показывает нам, как именно мы можем использовать BDD и шаги, описанные Gherkin, продолжая в то же время использовать известные Pytest-конструкции (фикстуры, добавление test_ к файлам для исполнения). При необходимости код можно доработать, к примеру, задействовав паттерн Page Object либо совместив шаги, но наша задача - подчеркнуть BDD-аспект данного сценария.</p>
9
<p>Чтобы выполнить тест, можно вызвать<em>pytest test_store_login.py</em>, в результате чего мы увидим результат. Кроме того, Pytest-BDD сгенерирует полезные отчеты в стиле Cucumber, что произойдет в дополнение к стандартной Pytest-отчетности. Также в шагах Gherkin доступны регулярные выражения и замещения.</p>
9
<p>Чтобы выполнить тест, можно вызвать<em>pytest test_store_login.py</em>, в результате чего мы увидим результат. Кроме того, Pytest-BDD сгенерирует полезные отчеты в стиле Cucumber, что произойдет в дополнение к стандартной Pytest-отчетности. Также в шагах Gherkin доступны регулярные выражения и замещения.</p>
10
<p><em>Источник: https://simplythetest.tumblr.com/post/189048770415/pytest-the-awesome-parts-pytest-bdd.</em></p>
10
<p><em>Источник: https://simplythetest.tumblr.com/post/189048770415/pytest-the-awesome-parts-pytest-bdd.</em></p>
11
11