Cucumber功能可以将常量传递给步骤定义吗?

时间:2013-01-28 19:27:27

标签: ruby cucumber constants static-libraries

我有一个XPATH库,用于XPATH定期更改的站点。我编写它是因为我不是通过每个功能文件并更改它发送的XPATH,而是可以简单地更改我的.rb库中变量的值。

是否可以通过.feature文件将这些常量传递给步骤定义?

示例.feature功能文件:

Scenario: I want to test a button
    When I go to url "blah"
    And I click on the XPATH: XPATH_CONSTANT_VARIABLE

示例.rb步骤定义:

When /^I click on the XPATH: {I DON'T KNOW WHAT TO PUT HERE}$/ do |path|
    @driver.find_element(:xpath, path).click
end

示例XPATH .rb库:

XPATH_CONSTANT_VARIABLE = "//*[@id="blahblah"]/div[1]/div/div[2]/div/div[1]/div/div[5]/div/div/div/div[2]"

1 个答案:

答案 0 :(得分:3)

您的方案非常紧迫。我建议你让它们更具说明性,不要在场景中使用(或引用)XPathes。读:


如果您确实希望保留原有场景,可以使用:

When /^I click on the XPATH: \w+$/ do |constant|
  xpath = Kernel.const_get constant
  @driver.find_element(:xpath, xpath).click
end

但是把所有常量放到全球空间就像你一样对我来说似乎很难看。将它们放到YAML文件中可能会更好。