2014-01-28 49 views
1

我有一个其步骤定义驻留在多个文件中的场景。例如,登录步骤驻留在login_steps.rb中,搜索相关步骤驻留在search_steps.rb中针对同一场景的多个文件的步骤定义

Cucumber输出未在login_steps.rb中执行的任何步骤的未定义步骤。步骤定义仅在login_steps.rb中存在时才运行。是否需要将场景的所有步骤定义放在同一个文件中?

我的文件夹结构

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

命令我使用:

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

如果您移动情景文件夹内的'step_definitions'文件夹会发生什么? – Bala

+0

它仍然是相同的结果 – Madhu

+0

我得到它的工作。有一些隐藏的文件与步骤定义文件具有相同的名称。我刚刚删除它们。 – Madhu

回答

1

Cucumber和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

这可能是一个“违规”,但我将结合从惠特尼井村和Dave W上的答案,只是为了让答案更加清晰......

你问:

“是否需要将场景的所有步骤 定义放在同一文件中?”

你可以把在逻辑上不同的文件,你的步骤定义不同的文件夹内,如您(下面的例子)认为合适的。毕竟,它只是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 
相关问题