#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. Люк Хилл -Я обновил свой пост некоторым кодом. Спасибо вам за советы. Я постараюсь сжать строки, чем уменьшить их.