黄瓜:步骤检测标签是否可能?

时间:2012-05-22 15:59:03

标签: cucumber

我正在为密码管理页面编写测试套件。对于这些场景,大多数人不应该实际更改密码,但有些人会这样做。我使用了标记@changePassword,以便我可以选择运行这些方案。

我遇到的问题是尽可能不写重复的步骤。

简化的示例场景:

@changePassword
Scenario: successful change
  Given the Manage Password page is loaded
  And a new password is generated
  When the old password is entered
  And the new password is entered
  And the confirm password is entered
  And the OK button is clicked
  Then the password has changed

Scenario: failed change (missing confirm)
  Given the Manage Password page is loaded
  And a new password is generated
  When the old password is entered
  And the new password is entered
  And the OK button is clicked
  Then the password change fails

两个版本的大多数步骤相同,我关注的主要差异是And a new password is generated步骤。在第一个场景中,我希望将新密码保存为用户的密码。在第二种情况下,我希望最后丢弃新密码。

类似的东西:(伪代码)

And /^a new password is generated$/ do
  old password = user's password
  new password = generate random new password
  confirm password = new password
  if tag @changePassword is present
    user's password is set as the new password
  end
end

是否有可能使这成为可能?我可以写第二步,如And a new password to be saved is generated或其他东西,但为了便于阅读,对于非技术精明的同事,使用相同的步骤是更好的选择。 (我在过去发现使用不同的短语来描述类似的过程,对用户来说完成了同样的事情,引起了混乱。如果可能的话,尽量避免工作场所的混淆。)

旁注:使用Cucumber和Ruby(使用Watir),如果这有什么不同(是吗?)

1 个答案:

答案 0 :(得分:2)

这是一个丑陋的解决方案,但你可以使用标记钩子来设置变量,然后在方法中使用if语句根据该变量的值保存/不保存吗?