【问题标题】:How to use or condition in serverspec?如何在 serverspec 中使用或条件?
【发布时间】:2016-03-24 12:16:11
【问题描述】:

我有一个网站要测试状态码,使用 curl 命令获取网站的状态码。有时它会给出 200 和 302 状态码。 我正在使用 serverspec 来测试网站状态代码。 当我得到 2 个状态码时,我想使用“或”条件来完成它。 我怎么能用它。 这是我的 Serverspec 测试用例。

describe command('curl -IL --retry 4 "www.example.com"') do
  its(:stdout) { should match '200' or '302' }
end

这对我来说是错误的。

【问题讨论】:

    标签: curl serverspec


    【解决方案1】:

    我从未在 serverspec 中看到过 or。但也许只是在命令本身中解决这个问题:

    describe command('curl -sL -w "%{http_code}\\n" "www.example.com" -o /dev/null | sed "s/200/OK/" | sed "s/302/OK/"') do
      its(:stdout) { should match 'OK' }
    end
    

    【讨论】:

    • 不是“302 OK”,而是“302 NOT Found”。这就是它给出“HTTP/1.1 302 Found”或“HTTP/1.1 200 OK”的方式,不确定我们什么时候能得到这两个
    • 注意命令。 curl 输出只会是状态代码,如果它是 200 或 302,稍后会替换为“OK”。OK 与状态代码的含义完全无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多