Что такое Cucumber Файл функции и определение шага? (Пример)

⚡ Умное резюме

Cucumber Файлы функций описывают поведение на простом языке Gherkin, а определения шагов содержат код, выполняющий каждую строку. Каждый Cucumber Для проекта необходимы оба варианта, хранящиеся в папках с фиксированной структурой внутри каталога features.

  • 🔘 Два файла: Файл описания функций определяет, что должно произойти; файл определения шагов описывает, как автоматизация это обеспечивает.
  • ☑️ Ключевые слова для слова «Огурец»: Feature, Scenario, Given, When и Then придают сценарию структуру и удобочитаемый вид.
  • На ступеньках не должно быть двоеточий: В полях Feature и Scenario необходимо ставить двоеточие, а в полях Given, When и Then двоеточие стоять не должно, иначе шаг будет проигнорирован.
  • 🧪 Наборы данных: Таблица «Сценарий плюс примеры» воспроизводит один сценарий для множества строк входных данных.
  • 🇧🇷 Общая конфигурация: Фоновый режим исключает повторяющиеся шаги, заданные в каждом сценарии в рамках функции.
  • 📊 Совпадение: Cucumber При сопоставлении ключевое слово игнорируется, поэтому два шага никогда не могут иметь одинаковый текст.

Cucumber Описание файла функций и определения шага с примером.

В каждом проекте 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

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

Анимация Cucumber При каждом шаге Gherkin по очереди отображается файл с описанием выполняемых функций.

Что такое «Определение шага»?

Определение шага сопоставляет шаги тестового примера в файлах функций (представленные с помощью «Дано/Когда/Тогда») с кодом. Он выполняет шаги тестируемого приложения и сравнивает результаты с ожидаемыми. Чтобы определение шага было выполнено, оно должно соответствовать данному компоненту в объекте. Определение шага определяется в файлах 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 установка пошаговое руководство и более подробная информация автоматизация тестирования серии.

Часто задаваемые вопросы (FAQ)

Нет. В файле .feature может быть указана ровно одна функция, хотя он может содержать неограниченное количество сценариев. Если вам нужна вторая функция, создайте второй файл — это ограничение обеспечивает удобную навигацию по папке по мере роста набора задач.

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

В нём содержится всё, что не является определением шага: настройка среды, конфигурация браузера, хуки, которые запускаются до или после сценария, и общий вспомогательный код.ping Разделение предотвращает превращение файлов определения шагов в фиктивные.ping земля.

Cucumber Сообщает, что шаг не определен, а не завершился неудачей, и выводит предлагаемый фрагмент кода, который можно вставить в файл определения шага. Сценарий помечается как не пройденный, поэтому неопределенный шаг никогда не будет автоматически засчитан как успешный.

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

Крупные языковые модели формируют Gherkin на основе критериев приемлемости и еще быстрее генерируют соответствующие шаблоны определений. RevПросмотрите вывод для дублирующегося текста шагов и для сценариев, в которых раскрываются детали реализации, — именно здесь обычно возникают ошибки при генерации Gherkin.

Очень. Получив открытый файл с описанием функций, Copilot вычисляет регулярное выражение и сигнатуру метода для неопределенного шага и заполняет тело запроса, используя окружающий код. Воспринимайте это как черновик; предлагаемые им утверждения все еще нуждаются в проверке человеком.

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

Подведем итог этой публикации следующим образом: