Вызов одного файла функций в качестве фонового перехода в другой с помощью cucumber ruby

#ruby #cucumber

Вопрос:

У меня есть файл функций A с 8-9 строками шагов, который охватывает один сценарий. Теперь мне нужно использовать файл функций A в качестве фонового шага в файле функций B, сократив количество шагов до 3-4.

Мой подход:

  • В файле функций B — Сократите шаги(из файла функций A) до 3-4 строк, используйте вспомогательные методы и добавьте в качестве фоновых шагов.

Файл функций A:

 
Feature: I want to create an event

  Background: User is Logged In
    Given a logged in user

Scenario: Creating an event
  Given I select event
  And I add event details
  And I add start and end time
  Then Timings will be added successfully 
  When I add ticket information and continue
  And Publish my event
  Then I verify event will be created successfully
 

Файл функций B

 
Feature: Place an order

Background: Event is created

Given a logged in user

When I select event and fill in required details

Then event should be published
 

Меня беспокоит дублирование. Я использую файл функций A в качестве фонового шага в файле функций B, уменьшая количество шагов, но функционально оба файла функций тестируют одну и ту же функцию.

Пожалуйста, предложите лучший подход, если это возможно. Спасибо

Комментарии:

1. Пожалуйста, покажите немного кода. «Сокращение 8-9 строк до 3-4 строк с помощью вспомогательных методов и фоновых шагов» довольно расплывчато/двусмысленно; нам действительно нужно увидеть что-то более конкретное, чтобы дать правильный ответ. Кроме того, ваш вопрос звучит так, как будто он может лучше подходить для анализа кода , а не для стекового потока, особенно если какие-либо ответы будут субъективными/основанными на мнениях.

2. Прошу прощения!! Обновлено с подробностями кода

Ответ №1:

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

 Given I have a party of 2/1/0 # This means adults/children/infants
And the child is under 12
And I am flexible on my flights
And I am going to Spain
When I search for flights
 
 Given I have Spanish flights displayed # You could also add the pax in here if you wanted
 

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

т.е.

 Given('I am {int} years old') do |age|
  @person.age = age
end

Given('my name is {word}') |name|
  @person.name = name
end

Given('my hometown is {string}') |hometown|
  @person.location = hometown
end
 

Может стать

 Given('I am {word}, {int} years old from {string}') |name, age, hometown|
  @person.name = name
  @person.age = age
  @person.location = hometown
end
 

Надеюсь, некоторые из этих советов заставят вас задуматься.

Комментарии:

1. Люк Хилл -Я обновил свой пост некоторым кодом. Спасибо вам за советы. Я постараюсь сжать строки, чем уменьшить их.