在黄瓜中使用常数?

时间:2013-08-01 19:16:16

标签: testing cucumber qa frank

我有大约20个场景使用相同的整数来指定tableviewcell的行号。最近对产品进行了更改,我不得不通过更改行号来更改所有20个方案。目前我不想针对该行制定一个步骤,因为我有大约30个不同的行要处理:

我宁愿这样做:

Given /^I am on the page labeled "([^"]+)" on row number (\d*)$/ do |page_name, row_number|
     steps %Q{
       When I scroll down #{row_number} rows in table "LeftMenu"
       And I touch the TableViewCell marked "#{page_name}"
     }
end

而不是:

Then /^I select specificName$/ do
  scroll_down(24)
end

我可以在黄瓜中使用常量吗?像这样:

const ROW_NUM 24

Then I select "tableViewCellName" at row number ROW_NUM

由于

2 个答案:

答案 0 :(得分:2)

您不能将常量直接传递给步骤定义。但是,如果传递的值与常量匹配,则可以检查步骤定义。

例如,通过以下步骤:

ROW_NUM = 24

Then /I select "tableViewCellName" at row number (.+)/ do |row|
    row = (Kernel.const_get row rescue row.to_i)
    p row
end

您可以使用ROW_NUM“常量”调用它:

Then I select "tableViewCellName" at row number ROW_NUM
#=> 24

或使用特定的行号:

Then I select "tableViewCellName" at row number 1
#=> 1

答案 1 :(得分:2)

有几种解决方法,并非所有这些都适合您的情况

  1. 您可以将一行的所有测试用例分组到一个大的测试用例中,然后调用

    When I test row 23

  2. 您可以使用一个步骤将行号保存到变量中

    When I prepare to test row 23
    And then I do something with the row I am testing
    Then something is displayed in the row I am testing

  3. 使用表格

    When I test the following rows with data:
      | 23 | something | something else |
      | 26 | something | something else | 
      | 28 | something | something else |