多次运行黄瓜功能

时间:2010-06-16 10:38:17

标签: ruby rake cucumber

我试图多次运行黄瓜功能(即500次)。有没有办法做到这一点,而不是每次都要输入相同的命令?我猜这可以用Rake完成吗?我不是使用耙子或黄瓜的专家。

非常感谢您的帮助。

谢谢

5 个答案:

答案 0 :(得分:8)

ruby -e '500.times { `cucumber` }'

答案 1 :(得分:5)

在你的rake文件中:

require 'rubygems'
require 'cucumber'
require 'cucumber/rake/task'

cuke_task = Cucumber::Rake::Task.new(:features) do |t|
  t.cucumber_opts = "features --format pretty"
end

task :feature, :name, :times do |task,args|
  puts "Executing feature: #{args[:name]} #{args[:times]} times"
  cuke_task.cucumber_opts = "features/#{args[:name]}"
  args[:times].to_i.times { Rake::Task[:features].execute }
end    

首先,我创建了一个默认的黄瓜任务,它可以执行我的所有功能,并为我设计好格式。

之后我定义了一个名为feature的rake任务,该任务将接受该功能的两个参数name和执行times

然后我扩充cuke任务以使用我指定的功能name,然后执行Rake任务指定的次数。

$ rake feature['login.feature',500]

答案 2 :(得分:3)

这也可以使用Scenario Outline和嵌套步骤来完成:

使用N个示例创建方案大纲。该方案将运行N次。

Feature: Login Robustness

  Scenario Outline: I want to be assured that login works consistently
    When i run login # "<login>" repeatedly, it never fails

  Examples:
    | login                |
    | repeated login # 1   |
    | repeated login # 2   |
    | repeated login # N   | 
           …

将您现有的步骤用作您定义的方案大纲中的嵌套步骤:

When(/^i run login \# "(.*?)" repeatedly, it never fails$/) do |login_run_number|
  puts login_run_number
  steps %{
  Given I am at initial login, Core
  When A correct username and password are entered, Native (Core)
  Then I should be logged in, Native (Core)
}
end

优势:

  • 只为整个测试运行编写一份报告;没有N. 报告挖掘以查看结果。
  • 它使用现有的黄瓜功能;没有修改 需要框架。
  • 测试人员已经了解情景概述的工作原理。

<强>缺点:

  • 丑陋的多线.feature文件。

答案 3 :(得分:1)

使用以下内容标记您的功能:@ AndIwillwalk500miles

@AndIwillwalk500miles
Feature: Walk A Mile
  'That I can walk a mile in another man's shoes.'

  Scenario: That I can walk a Mile in loafers
    Given I am wearing loafers
    And I start at point A
    When I walk a mile
    Then I am at point B

features/support/文件夹中创建ruby文件。惯例似乎是env.rbhooks.rb,但只要它在该文件夹中,您所称的就没关系。我称之为env.rb。将以下代码放入其中:

Around('@AndIwillwalk500miles') do |scenario, block|
  500.times { block.call }
end

完成后,删除标记。如果您只想从您的功能中运行一个方案,请改为标记它。这样,您可以根据需要运行多次或少量测试500次,而无需使用Rake或乱用命令行。如果您在操作系统环境之间移动,这将特别有用。

答案 4 :(得分:-2)

这是一个愚蠢的工作,但试试这个

cucumber features / file.feature features /../ features / file.feature

只要每次文件的路径不相同,你就可以根据需要添加“..”