Ruby 多次运行cucumber功能
我尝试多次运行cucumber功能(即500次)。有没有一种方法比我每次都必须输入相同的命令更有效?我猜这可以用耙子来完成?我不是使用耙子或黄瓜的专家 谢谢你的帮助 感谢您的rake文件中的: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
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文件
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