Ruby 多次运行cucumber功能

Ruby 多次运行cucumber功能,ruby,rake,cucumber,Ruby,Rake,Cucumber,我尝试多次运行cucumber功能(即500次)。有没有一种方法比我每次都必须输入相同的命令更有效?我猜这可以用耙子来完成?我不是使用耙子或黄瓜的专家 谢谢你的帮助 感谢您的rake文件中的: ruby -e '500.times { `cucumber` }' require 'rubygems' require 'cucumber' require 'cucumber/rake/task' cuke_task = Cucumber::Rake::Task.new(:features) d

我尝试多次运行cucumber功能(即500次)。有没有一种方法比我每次都必须输入相同的命令更有效?我猜这可以用耙子来完成?我不是使用耙子或黄瓜的专家

谢谢你的帮助

感谢您的rake文件中的:

ruby -e '500.times { `cucumber` }'
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    
首先,我创建一个默认cucumber任务,该任务将执行我的所有功能,并为我设置漂亮的格式

在此之后,我定义了一个名为
feature
的rake任务,该任务将接受两个参数
name
times

然后,我增加cuke任务以使用我指定的特性
name
,然后按照指定的次数执行Rake任务

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

用如下内容标记您的功能:@AndiWillWalk500英里

@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.rb
hooks.rb
,但只要它在那个文件夹中,你们怎么称呼它都无关紧要。我叫我的
env.rb
。将以下代码放入其中:

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

完成后,移除标签。如果您只想从功能中运行一个场景,只需标记它即可。通过这种方式,您可以运行任意多或任意少的测试500次,而无需使用Rake或混乱命令行。如果您在操作系统环境之间移动,这尤其有用。

这是一个愚蠢的解决方法,但是试试这个

cumber features/file.features/。/features/file.feature


只要每次指向文件的路径都不相同,就可以根据需要添加尽可能多的“.”

这也可以通过使用场景大纲和嵌套步骤来实现:

用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   | 
           …
优势:

  • 整个测试运行只编写一份报告;没有N 要挖掘报告以查看结果
  • 它使用现有的功能;不修改 需要一个框架
  • 测试人员已经了解了场景大纲是如何工作的
缺点:

  • 丑陋的多行.feature文件

我相信您也可以在bash脚本中实现这一点,但我比bash更了解ruby;做黄瓜;完成应该完成这项任务,除非您运行的是较旧版本的Bash。不过,在Ruby中,它实际上更简单、更短、更快!当我在windows上运行时,我没有得到任何输出。仅在提示下运行cucumber一次或使用-f progress工作,并按预期显示输出。编辑:如果我在“cucumber”之前添加puts,它会显示输出。这与watir有什么关系?我不敢相信我是第一个这么说的人,但是:不要这样做。为什么不这样做?如果您正在测试,并且某个测试是不稳定的,那么运行它5次可能会很有用,以查看它失败了多少次,以及它是否每次都在同一位置失败。upporated。当我实现这个时,如果测试失败,程序将退出,因此您可能必须将执行行包装在try-catch块中。如果Around钩子可以使用regex并解析标记中的时间,那就更好了!或者如果我们可以从命令行获取时间。
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