JMeter - 如果出现错误则暂停请求
JMeter - Pause the request if it gives an error
我正在使用 Apache JMeter 发送数千个 HTTP 请求,中间有 3 秒的延迟。响应主体为 json 并以 {"errors":[ ], ...} 开头。如果有错误,它将在 [ ] 中。如果没有错误,[ ] 将为空。
我希望 JMeter 在收到错误时暂停一小段时间,然后重试请求。这样它会在需要时添加额外的缓冲区。
我需要脚本吗?我怎样才能做到这一点?
您可以通过添加 JSON JMESPath Extractor 作为 returns 和 JSON 采样器的子级并像这样配置它来获取错误数:
它将提取 errors
JSON Array and store it into errors
JMeter Variable
中的条目数
然后你可以使用 If Controller to check if the number of errors is above zero, it can be done using __jexl3() function 比如:
${__jexl3(${errors} > 0,)}
最后你可以使用 Flow Control Action 采样器引入延迟:
解决方案 1
根据您的要求将 JSR223 Post Processor 添加到测试计划级别、线程组或采样器。
将以下代码添加到脚本区域以检查错误并在错误后引入延迟。
int delayOnErrorInMillis = 5000
if (prev.getResponseDataAsString().startsWith('{"errors":')){
log.info("ERROR !")
sleep(delayOnErrorInMillis)
}
我正在使用 Apache JMeter 发送数千个 HTTP 请求,中间有 3 秒的延迟。响应主体为 json 并以 {"errors":[ ], ...} 开头。如果有错误,它将在 [ ] 中。如果没有错误,[ ] 将为空。
我希望 JMeter 在收到错误时暂停一小段时间,然后重试请求。这样它会在需要时添加额外的缓冲区。
我需要脚本吗?我怎样才能做到这一点?
您可以通过添加 JSON JMESPath Extractor 作为 returns 和 JSON 采样器的子级并像这样配置它来获取错误数:
它将提取 errors
JSON Array and store it into errors
JMeter Variable
然后你可以使用 If Controller to check if the number of errors is above zero, it can be done using __jexl3() function 比如:
${__jexl3(${errors} > 0,)}
最后你可以使用 Flow Control Action 采样器引入延迟:
解决方案 1
根据您的要求将 JSR223 Post Processor 添加到测试计划级别、线程组或采样器。
将以下代码添加到脚本区域以检查错误并在错误后引入延迟。
int delayOnErrorInMillis = 5000
if (prev.getResponseDataAsString().startsWith('{"errors":')){
log.info("ERROR !")
sleep(delayOnErrorInMillis)
}