Ruby on rails 黄瓜的后钩

Ruby on rails 黄瓜的后钩,ruby-on-rails,ruby,cucumber,Ruby On Rails,Ruby,Cucumber,各位 我在使用之后的挂钩时遇到一些问题。我已将我的测试组织在如下文件夹中: features/Accounts/accounts_api.feature features/Accounts/step_definition/account_steps.rb features/labs/create_lab.feature features/labs/step_definition/labs_steps.rb 现在我在Accounts特性的步骤定义中有一个After钩子,我希望该钩子在“Acco

各位

我在使用
之后的
挂钩时遇到一些问题。我已将我的测试组织在如下文件夹中:

features/Accounts/accounts_api.feature
features/Accounts/step_definition/account_steps.rb

features/labs/create_lab.feature
features/labs/step_definition/labs_steps.rb
现在我在Accounts特性的步骤定义中有一个
After
钩子,我希望该钩子在“Accounts”特性的每个场景之后运行,但我不希望它在“labs”特性的每个场景之后运行。我试过这个:

cucumber--tags@newlabs

上面应该运行标记为
newlabs
的labs功能中存在的所有场景,但我看到的是,一旦标记为
@newlabs
的场景运行后,帐户的步骤定义中存在的
@挂钩开始运行。我在想为什么会发生这种情况,我是以错误的方式使用钩子,还是我对钩子的总体理解是错误的


非常感谢您花时间回复,这非常有帮助。

钩子不在乎它们位于哪个步骤定义脚本中,并且将针对每个场景运行。或者,更具体地说,您的after钩子将在运行的每个场景之后运行,对于每个特性,不管您传递给cumber的标记是什么


如果您想对此进行更多的控制,请查看并查看“标记的挂钩”部分。

挂钩不关心它们位于哪个步骤定义脚本中,并且将针对每个场景运行。或者,更具体地说,您的after钩子将在运行的每个场景之后运行,对于每个特性,不管您传递给cumber的标记是什么


如果您想对此进行更多控制,请查看并查看“标记的挂钩”部分。

可能您在错误的位置定义了挂钩之后的
。请注意,必须在
.rb
中定义
之后的钩子(以及其他钩子),而不是在
.feature
文件中定义。挂钩的常见位置是
features/support/hooks.rb
。您将通过以下方式定义钩子:

# features/support/hooks.rb
After('@newlabs') do # will run after each scenario tagged with @newlabs 
   # your teardown ruby code 
end

# features/Accounts/accounts_api.feature
@newlabs # tag all scenarious of this feature with @newlabs tag
Feature: your feature

Scenario: your scenario
  Given: ...
  When: ...
  Then: ...

在cucumber输出中,您将看不到执行挂钩后的
(除非您从挂钩定义中将某些内容输出到
STDOUT
)将隐式运行。

可能您在错误的位置定义挂钩后的
。请注意,必须在
.rb
中定义
之后的钩子(以及其他钩子),而不是在
.feature
文件中定义。挂钩的常见位置是
features/support/hooks.rb
。您将通过以下方式定义钩子:

# features/support/hooks.rb
After('@newlabs') do # will run after each scenario tagged with @newlabs 
   # your teardown ruby code 
end

# features/Accounts/accounts_api.feature
@newlabs # tag all scenarious of this feature with @newlabs tag
Feature: your feature

Scenario: your scenario
  Given: ...
  When: ...
  Then: ...
在cucumber输出中,在执行
hook之后,您将看不到
(除非您从hook定义中向
STDOUT
输出了一些东西)-将隐式运行