2014-01-28 3 views
1

У меня есть сценарий, в котором его определения шагов находятся в нескольких файлах. Например, шаг входа находится в login_steps.rb, а шаг, связанный с поиском, находится в search_steps.rbОпределение шага из нескольких файлов для одного и того же сценария

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

Моя структура папок

Project folder 
└─ features 
    ├─ pages 
    ├─ scenarios 
    ├─ step_definitions 
    └─ support 

Command я использовал:

cucumber -r features features\scenarios\Test.feature 
+0

Что произойдет, если вы переместите папку 'step_definitions' внутри папки сценариев? – Bala

+0

все тот же результат – Madhu

+0

У меня это работает. Были некоторые скрытые файлы с тем же именем, что и файлы определения шага. Я просто удалил их. – Madhu

ответ

0

Я не знаком со спецификой RoR и огурцов, но я использую огуречный-JVM. Поддерживаются шаги из разных файлов. Обратите внимание, что в документации https://github.com/cucumber/cucumber/wiki/Cucumber-Backgrounder#where-do-i-put-tests конкретно упоминается его.

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

1

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

Root 
- features 
    - step_definitions 
    - step_definition.rb 
    - support 
     - env.rb 
- lib 
    - BasePage.rb 
- feature.feature 

В принципе, с этой структурой каталогов, это не имеет значения, где ваши определения шага Покуда вы ТРЕБУЕТЕ конкретную страницу ВЫ реферирование (ваш BasePage.rb файл, например)

require File.join(File.dirname(__FILE__), '..', '..', 'lib', 'pages', 'BasePage') 


And /^I do something$/ do 
    @page = BasePage.new(@test_env) 
    @page.verify_el(css) 
end 
0

Это может быть «нарушение», но я бы объединить ответы от Уитни Imura и Dave W только, чтобы сделать ответ более ясным ...

Вы спрашиваете:

«Требуется ли установить все шаги определения сценария в том же файле?»

No. Вы можете разместить свои определения шага в логически различных файлов в различных папках, как вы считаете нужным (пример ниже). В конце концов, это всего лишь код ruby.

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

cucumber -r features features\entities\entity.feature 

Если вы не запустить его, как указано выше, вы получите не хватает stepdefs ... Вот выполнения тестов на текущем проекте в качестве средства для демонстрации:

cucumber 
60 scenarios (14 undefined, 46 passed) 
409 steps (32 skipped, 26 undefined, 351 passed) 

cucumber -r features 
60 scenarios (60 passed) 
409 steps (409 passed) 

как описано в Cucumber documentation, вы можете организовать тесты номера вашего л ogical поломка ваших возможностей:

|__ features 
| |__ entities 
| | |__ entity.feature 
| | |__ step_definitions 
| |  |__ anything.rb 
| |  |__ entity_steps.rb 
| |__ locations 
| | |__ location.feature 
| | |__ step_definitions 
| |  |__location_steps.rb 
| |__ sites 
| | |__ step_definitions 
| |__ step_definitions 
| | |__ local_assert_steps.rb 
| | |__ local_crud_response_steps.rb 
| | |__ local_email_steps.rb 
| | |__ local_file_steps.rb 
| | |__ local_script_steps.rb 
| | |__ local_steps.rb 
| | |__ local_web_steps.rb 
` | |__ local_xml_file_steps.rb 
    |__ support 
     |__ env.rb 
     |__ local_env.rb 
     |__ local_transforms.rb 
Смежные вопросы