2010-06-16 122 views
6

我試圖多次運行黃瓜功能(即500次)。有沒有辦法做到這一點比我每次都必須輸入相同的命令?我猜這可以使用Rake完成?我不是使用耙子或黃瓜的專家。多次運行黃瓜功能

感謝您的幫助。

感謝

+0

這與watir有什麼關係? – 2010-06-17 15:56:53

+0

我不敢相信我是第一個這麼說的,但是:不要這樣做。 – 2014-09-12 19:38:19

+0

爲什麼不這樣做?如果你正在測試,並且測試是片狀的,那麼運行它5次可能會有用,看看它失敗了多少次,以及它是否每次都在同一個地方失敗。 – zmorris 2016-02-04 20:56:27

回答

8
ruby -e '500.times { `cucumber` }' 
+0

我相信你也可以在bash腳本中做到這一點,但我知道ruby比bash更好。 – lambdabutz 2010-06-16 13:53:34

+1

'對於{1..500}中的x;做黃瓜;完成「應該做的伎倆,除非你正在運行一箇舊版本的Bash。但是,Ruby實際上更簡單,更短,更快! – irkenInvader 2010-06-16 15:03:52

+0

更有表現力! – lambdabutz 2010-06-16 15:45:32

5

在您耙文件:

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  

首先,我創建一個將執行我的所有功能,並進行格式化漂亮對我來說是默認黃瓜任務。

之後,我定義了一個rake任務,名爲feature,它將接受該功能的兩個參數name和執行的times

然後,我增加cuke任務,使用我指定的功能name,然後執行Rake任務指定的次數。

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

已投票。當我實現這個如果測試失敗,程序將退出,所以你可能不得不將執行行包裝在try catch塊 – jmccure 2015-05-01 14:41:53

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或混淆命令行。如果您在操作系統環境之間移動,這特別有用。每次

+0

如果Around鉤子可以從標籤獲取正則表達式並解析時間,那將會更好!或者如果我們能從命令行獲得時間。 – 2016-11-28 02:53:45

-2

這是一個愚蠢的解決辦法,但只要嘗試這個

黃瓜功能/ file.feature功能/../功能/ file.feature

的路徑文件是不相同,可以釘在儘可能多的「」只要你想

3

這也可以使用方案大綱和嵌套步驟完成的:

創建具有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 報告可以查看結果。
  • 它使用現有的黃瓜功能;不需要修改 框架。
  • 測試人員已經瞭解Scenario Outline的工作原理。

缺點:

  • 醜陋,多.feature文件。