Что такое Cucumber Файл функции и определение шага? (Пример)
⚡ Умное резюме
Cucumber Файлы функций описывают поведение на простом языке Gherkin, а определения шагов содержат код, выполняющий каждую строку. Каждый Cucumber Для проекта необходимы оба варианта, хранящиеся в папках с фиксированной структурой внутри каталога features.
В каждом проекте Cucumber есть одна директория в корне проекта, называемая «features». Именно здесь будут находиться все ваши функции Cucumber. В этой директории вы найдете дополнительные директории, такие как step_definition и support.
Эта планировка имеет значение, потому что Cucumber Обнаружение файлов происходит по соглашению, а не по конфигурации. Файл с описанием функций, расположенный вне каталога features, просто никогда не будет прочитан.
Что такое «Файл функции»?
Файл функций содержит высокоуровневое описание Сценарий тестирования Проще говоря, это называется... корнишонGherkin — это простой текстовый язык на английском языке.
Cucumber Файл функциональных объектов состоит из следующих компонентов:
- Характеристика: функция будет описывать текущий тестовый сценарий, который необходимо выполнить.
- Сценарий: Сценарий описывает шаги и ожидаемый результат для конкретного тестового примера.
- Схема сценария: один и тот же сценарий может быть выполнен для нескольких наборов данных с использованием схемы сценария. Данные представлены в виде табличной структуры, разделенной знаком (II).
- Данный: указывает контекст текста, который будет выполнен. Используя таблицы данных «Дано», шаг также можно параметризовать.
- После появления«Когда» указывает на действие тестирования, которое необходимо выполнить.
- ЗатемОжидаемый результат теста можно представить как «Затем».
В одном файле содержится одна функция. Приведенные ниже сценарии представляют собой конкретные примеры, иллюстрирующие эту функцию, и каждый сценарий следует одному и тому же ритму: описание исходного контекста, описание события, описание ожидаемого результата.
Далее мы научимся писать Feature File в Cucumber с примером.
Пример файла функций:
Оригинальный пример, опубликованный вместе с этим руководством, воспроизведен ниже в точности так, как он написан.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given: I am on career.guru99.com When: I click on career guide menu Then: I should see career guide page
⚠️ Исправление: В приведенном выше примере двоеточие ставится после Данный, После появления и ЗатемКорнеплод ставит двоеточие после Характеристика и Сценарий Только. Ключевое слово step, за которым следует двоеточие, не воспринимается как шаг, поэтому Cucumber Строка игнорируется без объяснений. Исправленный файл выглядит следующим образом.
Feature: Visit career guide page in career.guru99.com Scenario: Visit career.guru99.com Given I am on career.guru99.com When I click on career guide menu Then I should see career guide page
Парсеру не требуется отступ, но два пробела на каждом уровне — это общепринятый стиль, который значительно упрощает сканирование длинных объектов. Анимация ниже показывает обработку файла объектов, и каждый шаг становится зеленым по мере его прохождения.
Что такое «Определение шага»?
Определение шага сопоставляет шаги тестового примера в файлах функций (представленные с помощью «Дано/Когда/Тогда») с кодом. Он выполняет шаги тестируемого приложения и сравнивает результаты с ожидаемыми. Чтобы определение шага было выполнено, оно должно соответствовать данному компоненту в объекте. Определение шага определяется в файлах Ruby в разделе «features/step_definitions/*_steps.rb».
Сопоставление производится исключительно на основе текста шага. Cucumber При поиске определения ключевое слово не учитывается, поэтому два шага в одном и том же наборе могут никогда не содержать идентичный текст, даже если один является Given, а другой Then.
Пример определения шага: Здесь мы будем использовать выше Cucumber Пример файла функций для просмотра сайта career.guru99.com. Мы будем использовать такие функции, как «Когда, Тогда, Дано», как показано ниже. Cucumber Примеры файлов функций.
Step 1: Given (/^ I am on career.guru99.com$/) do Browser.goto "http://career.guru99.com" -This will visit career.guru99 on browser end Step 2: When (/^ click on career guide menu$/) do Browser.text (:name, " career guide" ).click – This will click "career guide menu" end Step 3: Then (/^ I should see career guide page$/) do Browser.goto "http://career.guru99.com/category/career-guide/" - It will visit "career guide page" end
⚠️ Примечание о языках: Приведённые выше определения относятся к языку Ruby, именно здесь и происходит всё остальное. Cucumber запущено, поэтому и названа эта папка. step_definitions и файлы заканчиваются на _steps.rbТот же файл с описанием функций используется для определения шагов, написанных на Java, Javaсценарий, Python или C# без каких-либо изменений в Gherkin. CucumberВ JVM регулярное выражение перемещается в аннотацию метода:
@Given("I am on career.guru99.com") public void i_am_on_the_career_page() { driver.get("http://career.guru99.com"); }
Какой бы язык вы ни выбрали, описание шага — единственное место, где должны быть детали реализации. Продолжайте читать.ping Селекторы и HTTP-запросы из файла описания функций позволяют непрограммисту понять сценарий. первый Cucumber скрипт Пошаговое руководство позволяет собрать эту пару от начала до конца.
Описание сценария и примеры в файле описания функций.
Наиболее распространенная причина, по которой файл с описанием функций становится нечитаемым, — это копирование сценария три раза для изменения одного значения. Схема сценария заменяет копии шаблоном и Примеры В таблице приведены значения.
Параметры записываются в угловые скобки и должны соответствовать заголовку столбца в таблице под ними. Cucumber Функция подставляет значения перед поиском соответствующего определения шага, поэтому сами определения не требуют специальной обработки.
Scenario Outline: Search the career guide Given I am on career.guru99.com When I search for "<keyword>" Then I should see the <section> section Examples: | keyword | section | | interview | Interview Tips| | resume | Resume Guide |
При использовании конспектов стоит помнить о нескольких моментах:
- Структура запроса выполняется один раз для каждой строки данных. Первая строка — это заголовок, и она никогда не выполняется.
- За планом сценария должен следовать как минимум один раздел с примерами, иначе ничего не будет выполнено.
- Соосность трубок в таблице не обязательна, хотя их выравнивание обеспечивает читаемость файла.
- Не делайте таблицу слишком маленькой. Таблица с тридцатью строками обычно указывает на то, что данные должны быть помещены в более узкую таблицу. тест, основанный на данных .
Фон, И, Но и другие ключевые слова, относящиеся к теме «Огурец»
Помимо шести компонентов, перечисленных ранее, Gherkin содержит ряд ключевых слов, которые позволяют сохранять читаемость длинных файлов с описанием функций.
- Предыстория — Блок шагов Given, который выполняется перед каждым сценарием в функции. Он устраняет необходимость повторного написания одного и того же предварительного условия в начале каждого сценария.
- И, и Созданием цифровых двойников возможности — Замена повторяющихся Given, When или Then. Читаются лучше и ведут себя идентично; Cucumber В любом случае, совпадения по тексту шага.
- Правило — необязательная группаpingДобавленная в Gherkin 6 функция собирает сценарии, иллюстрирующие одно из бизнес-правил.
- Doc Strings — блок текста, заключенный в три двойные кавычки, передаваемый в определение шага в качестве единого аргумента, если одной строки недостаточно.
- Таблицы данных — Строки, разделённые символом вертикальной черты, прикрепленные к одному шагу и используемые для передачи списка значений этому шагу.
- Теги — Метки, начинающиеся со знака «@», размещаются над функцией или сценарием, чтобы во время выполнения можно было выбрать подмножество.
- Комментарии — строка, начинающаяся с символа решетки (#). Комментарии разрешены только в начале строки, и в Gherkin нет блочных комментариев.
В совокупности, файл с описанием функций и общими настройками выглядит следующим образом:
Feature: Career guide navigation Background: Given I am on career.guru99.com Scenario: Open the career guide menu Given I am signed in And my profile is complete When I click on career guide menu Then I should see career guide page But I should not see the admin panel
Распространенные ошибки в файлах описания функций и способы их исправления.
Лучшее Cucumber Проблемы, о которых сообщают новички, — это не ошибки фреймворка. Это небольшие нарушения правил Gherkin, которые незаметно дают сбой.
| Ошибка | Что происходит | фиксированный |
|---|---|---|
| Двоеточие после Given, When или Then | Строка не распознается как шаг и пропускается. | Двоеточие следует использовать только после слов Feature и Scenario. |
| Два шага с идентичным текстом | Cucumber рассматривает их как дубликаты, поскольку ключевое слово игнорируется. | Переформулируйте один из шагов так, чтобы они читались по-разному. |
| Файл с описанием объекта находится вне каталога features. | Файл так и не обнаруживается, и тестовые запуски не выполняются. | Сохраните все .feature файл находится в папке features |
| Пятнадцать шагов в одном сценарии | Данный сценарий перестаёт работать, если использовать документацию. | Постарайтесь включить от трех до пяти шагов и подробно опишите каждый шаг. |
| Затем выполняет проверку строки в базе данных. | Тест проходит, если видимое пользователю поведение нарушено. | Проверка на основе наблюдаемых данных, таких как страница или ответ. |
| Таблица с описанием сценария без примеров. | Шаблон так и не был выполнен. | Добавьте раздел «Примеры» непосредственно под структурой документа. |
Исправление этих ошибок до расширения набора тестов обходится гораздо дешевле, чем после, поскольку каждый сценарий, написанный за это время, копирует одну и ту же структуру. После того, как файлы с описанием функций начнут работать корректно, следующим шагом будет настройка проекта — см. Cucumber установка пошаговое руководство и более подробная информация автоматизация тестирования серии.

