【问题标题】:Testing multiple hosts with the same test using serverspec使用 serverspec 使用相同的测试测试多个主机
【发布时间】:2015-05-21 12:50:16
【问题描述】:

Serverspec 站点的高级提示部分显示了使用相同测试集测试多个主机的示例。我自己构建了一个示例 (https://gist.github.com/neilhwatson/81249ad393800a76a8ad),但存在问题。

第一个问题是测试在第一次失败时停止,而不是通过批次进行并保持计数。第二个是故障输出没有表明故障发生在哪台主机上。我可以做些什么来解决这些问题并为所有主机生成最终报告?

【问题讨论】:

    标签: ruby rspec rspec3 serverspec


    【解决方案1】:

    对于第一个问题,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 中设置,我们可以将其用于add an RSpec configuration设置after(:each) 并且仅在错误时输出host。相关代码更改在fork of the gist 中,但基本上您只需要在spec_helper.rb 中使用以下sn-p:

    RSpec.configure do |c|
      c.after(:each) do |example|
        if example.exception
           puts "Failed on #{host_run_on}"
        end
      end
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多