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
输出了一些东西)-将隐式运行