我是黄瓜的新手,但享受它。
我目前正在编写一些Frank测试,并希望在多个功能中重复使用黄瓜脚本块 - 如果可能的话,我想在黄瓜级别执行此操作(不在ruby中)。
例如,我可能有4个脚本,都是从执行相同的登录步骤开始的:
given my app has started
then enter "guest" in "user-field"
and enter "1234" in "password-field"
and press "login"
then I will see "welcome"
then *** here's the work specific to each script ***
有没有办法在多个脚本之间共享前5行?某种“包含”语法?
答案 0 :(得分:25)
通常有两种方法:
如果您希望在功能文件中每个场景之前运行一系列步骤:
Background:
given my app has started
then enter "guest" in "user-field"
and enter "1234" in "password-field"
and press "login"
then I will see "welcome"
Scenario: Some scenario
then *** here's the work specific to this scenario ***
Scenario: Some other scenario
then *** here's the work specific to this scenario ***
如果您需要在不同的功能文件中使用“块”步骤,或者背景部分不适合,因为某些场景不需要它,那么创建一个调用其他场景的高级步骤定义:
Given /^I have logged in$/ do
steps %Q {
given my app has started
then enter "guest" in "user-field"
and enter "1234" in "password-field"
and press "login"
then I will see "welcome"
}
end
此外,在这种情况下,我会被诱惑而不是根据单独的步骤实现您的常用步骤,而是创建一个步骤定义:(假设Capybara)
Given /^I have logged in$/ do
fill_in 'user-field', :with => 'guest'
fill_in 'password-field', :with => '1234'
click_button 'login'
end
这为你的步骤定义带来了更多的意义,而不是创建一系列页面交互,需要在你意识到'哦,这部分让我登录'之前需要进行心理解析。
答案 1 :(得分:0)
建议使用更好的方法来使用红宝石级"方法"从代码维护和调试角度代码重用代码而不是嵌套步骤。
以下是更详细的链接: Reuse Cucumber steps