5

我将 cucumber-watir-webdriver 用于自动化目的。我有以下目录结构:

|features
 -|feature1
 --|1.feature
 --|step_definitions
 ---|1.rb
 -feature2
 --|2.feature
 --|step_definitions
 ---|2.rb

等等。我需要知道什么是减少1.rb2.rb. feature1并且feature2完全不同,所以我不能将两者结合在一个目录中。还有一些部分特征线相同,但步骤执行不同,因此如果它们在一起会产生歧义。

我需要知道是否有一些共同的部分1.rb以及2.rb我应该把它放在哪里是保持共同步骤定义的最佳实践。

4

2 回答 2

2

将您的功能分离到单独的目录中很好,但最好将您的*_step.rb文件一起保存在该step_definitions目录下的一个features目录中。您可以将两个功能共有的步骤放入一个common_steps.rb文件中(更好的是类似于login_steps.rbandtest_data_creation_steps.rb而不是common_steps.rb)。

要将其转换为与您的问题相同的样式目录结构图,我建议如下:

|features
 -|feature1
 --|1.feature
 -feature2
 --|2.feature
 -|step_definitions
 --|1.rb
 --|2.rb
 --|common_steps.rb <-- put your common steps in here
于 2012-10-16T22:46:21.563 回答
1

Cucumber 仅在当前或后续目录中搜索步骤定义。所以我们不能在两个功能目录下面有通用的步骤定义目录或文件,我找到了一个解决方案

|features
 -|feature1
 --|1.feature
 --|step_definitions
 ---1.rb
 -feature2
 --|2.feature
 --|step_definitions
 ---2.rb
 -|common_steps.rb <-- keep common steps in here

现在加载此步骤定义添加

 require "#{File.dirname(__FILE__)}/../../common_steps.rb"

在你的 1.rbs 中。你也可以有更长的目录结构,然后你可以在每个这样的目录中保留 common_steps.rb 文件,其中包含以下功能的常用步骤,你可以要求以前的 common_steps.rb 文件 -

 require "#{File.dirname(__FILE__)}/../common_steps.rb"

这段代码。这将使您的目录结构和 step_definition 文件保持干净

于 2012-10-18T11:46:41.437 回答