黄瓜 - 多语言网站的功能

时间:2013-03-02 11:50:04

标签: ruby testing cucumber

我是黄瓜新手,我正在努力找到定义功能的最佳方式。

我需要用多种语言测试网站,因此我想要测试的功能总是相同的,但是我需要在页面中查找的文本可能会有所不同。这大致是我想做的事情:

Scenario Outline: Browse through category from the home page
    Given I am on the <country> home page
    When I browse categories
    Then I should get the browse category page

Examples:
     | country |
     | UK      |
     | IT      |
     | US      |

我没有在功能描述中指定类别值,因为:

  1. 我希望能够从我的数据库中读取类别,所以每当我添加/删除一个时,我都不需要修改测试本身
  2. 想象一下,在同一个功能文件中有10个国家/地区有20个类别......这将是一团糟
  3. 为了避免2我可以为每个国家/地区创建一个功能文件...但是我必须复制并粘贴N次相同的功能描述
  4. 我想过从另一个步骤作为解决方案的一步。类似下面的伪代码:

    When /^I browse categories$/ do
      on CURRENT_HOME_PAGE do |page|
         page.categories_list.each do |category|
            ....visit category page....
            ....call "Then I should get the browse category page" step...
            ....go back to CURRENT_HOME_PAGE....
         end
      end
    end
    

    我不确定这是最好的解决方案。大多数人也不赞成从步骤中调用步骤。我个人也不喜欢它,因为我不喜欢混合步骤和功能定义的想法。

1 个答案:

答案 0 :(得分:0)

如何调用ruby方法而不是步骤定义并使用Cucumber实例变量?

我的意思是这样的:

Given /^I am on the (\w+) home page$/ do |country|
  @country = country # use Cucumber instance variable (it will be available in next steps of this scenario)
end

When /^I browse categories$/ do
  # read expected categories from DB for @country
  # visit Browse Categories page for @country
  # check that correct categories are shown
  expected_categories.each do |category|
    # visit category page
    # check that correct category page for @country is shown
  end
end