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

API文件上传轮询:While循环响应时间统计与失败判定咨询

轮询上传场景的JMeter解决方案

问题1:统计轮询步骤的响应时间

可以通过记录轮询阶段的起止时间差来统计时长,具体操作:

  • 在While循环开始前,用__time()函数记录起始时间戳(毫秒级):
    调用函数助手生成 ${__time(,START_TIME)},将当前时间存入START_TIME变量。
  • 在While循环结束后,添加JSR223 PostProcessor计算总时长:
    long startTime = Long.parseLong(vars.get("START_TIME"));
    long endTime = System.currentTimeMillis();
    long pollingDuration = endTime - startTime;
    vars.put("POLLING_TOTAL_DURATION", String.valueOf(pollingDuration));
    
  • 后续可通过${POLLING_TOTAL_DURATION}变量获取轮询总时长,也可关联到测试报告中展示。

问题2:轮询超时(10次未成功)时标记失败

有两种简单实现方式:

方式1:用响应断言直接判定

在While循环结束后添加响应断言:

  • 断言类型选择「JMeter变量」,输入变量名STATUS
  • 匹配规则选「Equals」,预期值填写success
  • 勾选「如果要测试的字段不存在则失败」
    当循环结束后STATUS不等于success时,断言会直接标记该步骤失败。

方式2:用JSR223 PostProcessor主动设置失败状态

同样在While循环结束后添加JSR223 PostProcessor,写入以下代码:

String currentStatus = vars.get("STATUS");
int loopCount = Integer.parseInt(vars.get("counter"));
if (!"success".equals(currentStatus) && loopCount >= 10) {
    prev.setSuccessful(false);
    prev.setResponseMessage("轮询10次后仍未完成,最终状态:" + currentStatus);
}

代码中prev指代循环内最后一次轮询请求,通过setSuccessful(false)标记请求失败,并自定义失败提示信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:30:44