You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Groovy的httpRequest接受404状态码以避免Hudson构建失败?

解决Groovy/Hudson中HTTP请求404导致构建失败的问题

我之前在Jenkins里用HTTP Request插件写集成测试时也碰到过一模一样的问题——默认情况下插件只会把100-399之间的状态码当成“成功”,所以404会直接触发构建失败。其实解决起来很简单,只需要显式指定允许的响应状态码就行,给你两种实用方案:

方案1:直接指定接受404状态码

在httpRequest调用里添加validResponseCodes参数,把404加入允许的范围。如果你想保留正常的成功响应码(100-399)同时接受404,可以这么写:

def testID = "fakeID"
def response = httpRequest(
    acceptType: "APPLICATION_JSON",
    contentType: "APPLICATION_JSON",
    customHeaders: [[name: 'Authorization', value: token]],
    url: server + port + "/exams" + testID,
    validResponseCodes: '100-399,404' // 保留正常成功码,同时接受404
)

如果你的测试只需要验证404这一种场景,也可以直接写validResponseCodes: '404',这样只有返回404时才会被判定为成功。

方案2:手动验证状态码(灵活度更高)

如果需要在拿到响应后做更多逻辑判断,比如根据状态码分支处理,可以先允许所有状态码避免构建直接失败,再手动校验返回值:

def testID = "fakeID"
def response = httpRequest(
    acceptType: "APPLICATION_JSON",
    contentType: "APPLICATION_JSON",
    customHeaders: [[name: 'Authorization', value: token]],
    url: server + port + "/exams" + testID,
    validResponseCodes: '100-599' // 允许所有HTTP状态码,防止构建直接失败
)

// 手动断言状态码是否符合预期
assert response.status == 404 : "测试失败:预期返回404,实际返回${response.status}"

这个方案适合同时测试多种状态码场景的集成用例,比如既测有效ID返回200,又测无效ID返回404的情况。

核心逻辑就是:httpRequest的validResponseCodes参数默认值是100-399,只要修改这个参数,把你需要的状态码(或范围)加进去,插件就不会再因为404标记构建失败了。

内容的提问来源于stack exchange,提问作者Nebulosar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:26:35