【问题标题】:Can a Cucumber feature pass a constant to a step definition?Cucumber 功能可以将常量传递给步骤定义吗?
【发布时间】:2013-01-28 19:27:26
【问题描述】:

我有一个 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]"

【问题讨论】:

    标签: ruby cucumber constants static-libraries


    【解决方案1】:

    您的场景非常必要。我建议您使它们更具声明性,并且不要在场景中使用(或引用)XPathes。阅读:


    如果你真的想保持你的场景不变,你可以使用:

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

    但是像你所做的那样将所有常量放到全局空间对我来说似乎很难看。将它们放入 YAML 文件可能会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多