保持黄瓜共同步骤的最佳做法

Uda*_*ami 5 ruby automated-tests watir cucumber watir-webdriver

我正在使用cucumber-watir-webdriver进行自动化.我有以下目录结构:

|features
 -|feature1
 --|1.feature
 --|step_definitions
 ---|1.rb
 -feature2
 --|2.feature
 --|step_definitions
 ---|2.rb
Run Code Online (Sandbox Code Playgroud)

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

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

Uda*_*ami 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
Run Code Online (Sandbox Code Playgroud)

现在加载此步骤定义添加

 require "#{File.dirname(__FILE__)}/../../common_steps.rb"
Run Code Online (Sandbox Code Playgroud)

在你的 1.rbs 中。您还可以拥有更长的目录结构,然后您可以将 common_steps.rb 文件保留在每个包含以下功能的通用步骤的目录中,并且您可以需要以前的 common_steps.rb 文件 -

 require "#{File.dirname(__FILE__)}/../common_steps.rb"
Run Code Online (Sandbox Code Playgroud)

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