我有一个用于测试UI功能的 cucumber 方案。有时由于几个问题之一,网页需要大量时间来响应,而Capybara超时并出现以下错误。

ruby-1.9.3-p327/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
ruby-1.9.3-p327/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
ruby-1.9.3-p327/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
ruby-1.9.3-p327/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
ruby-1.9.3-p327/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
ruby-1.9.3-p327/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'

我的问题是-

我可以以某种方式强制Cucumber方案或Capybara在超时错误时分别重试整个方案或步骤(以固定的次数)吗?

最佳答案

也许,您可以这样做:

Around do |scenario, block|
  for i in 1..5
    begin
      block.call
      break
    rescue Timeout::Error
      next
    end
  end
end

但由于错误(It's not possible to call block several times in Around hook),我无法确定此代码是否有效

10-07 19:03
查看更多