ruby – 使用serverspec测试使用相同测试的多个主机

前端之家收集整理的这篇文章主要介绍了ruby – 使用serverspec测试使用相同测试的多个主机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Serverspec站点的“高级提示”部分显示了测试具有相同测试集的多个主机的示例.我已经建立了一个我自己的例子( https://gist.github.com/neilhwatson/81249ad393800a76a8ad),但是有问题.

第一个问题是测试在第一次失败时停止,而不是通过批次进行,并保持一致.第二个是失败输出并不表示哪个主机出现故障.我可以如何解决这些问题并为所有主机生成最终报告?

解决方法

对于第一个问题,默认情况下,ServerSpec将运行所有测试.但是,由于您有一个为每个环境执行Rake任务的循环,因此第一个出现故障的环境会导致任务失败,因此引发异常,其余任务不会运行.

我已经分手了,更新了Rake task to surround it with a begin/rescue.

...
begin
  desc "Run serverspec to #{host}"
  RSpec::Core::RakeTask.new(host) do |t|
    ENV['TARGET_HOST'] = host
    t.pattern = "spec/base,cfengine3/*_spec.rb"
  end
rescue
end
...

对于第二个问题,ServerSpec看起来不会输出测试正在运行的环境,但是由于更新的Gist显示主机在spec_helper.rb中被设置,所以我们可以使用它来设置一个after( :每个),只输出主机出错.相关代码更改在fork of the gist,但基本上您只需要在spec_helper.rb中的以下代码段:

RSpec.configure do |c|
  c.after(:each) do |example|
    if example.exception
       puts "Failed on #{host_run_on}"
    end
  end
end
原文链接:https://www.f2er.com/ruby/267019.html

猜你在找的Ruby相关文章