加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 21:41:40 所属栏目:百科 来源:网络整理
导读:Serverspec站点的“高级提示”部分显示了测试具有相同测试集的多个主机的示例.我已经建立了一个我自己的例子( https://gist.github.com/neilhwatson/81249ad393800a76a8ad),但是有问题. 第一个问题是测试在第一次失败时停止,而不是通过批次进行,并保持一致.
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读