You need to enable JavaScript to run this app. JMeter如何将毫秒响应时间转秒并保留三位小数输出至邮件正文
优惠活动
大模型
产品
解决方案
定价
更多

JMeter如何将毫秒响应时间转秒并保留三位小数输出至邮件正文

JMeter 响应时间邮件展示精度调整方案

问题根源

prev.getTime() 方法返回的是long类型的毫秒整数,你原脚本中直接和整数1000做除法时会优先执行整数运算,直接丢弃小数部分后再转换为float类型,因此最终结果只有整数位,小数位固定为.0。

调整方法

直接修改BeanShell PostProcessor中的脚本即可,邮件正文的取值函数不需要改动,有两种可选实现:

方案1:最简修改

将除数改为浮点数1000.0,触发浮点数除法保留小数:

<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
    <boolProp name="resetInterpreter">false</boolProp>
    <stringProp name="parameters"></stringProp>
    <stringProp name="filename"></stringProp>
    <stringProp name="script">float duration = prev.getTime()/1000.0;
props.put("getDTS_response", String.valueOf(duration));</stringProp>
</BeanShellPostProcessor>

方案2:固定保留3位小数(更稳妥)

引入格式化工具固定输出三位小数,避免浮点数转字符串时出现多余无效位数:

<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
    <boolProp name="resetInterpreter">false</boolProp>
    <stringProp name="parameters"></stringProp>
    <stringProp name="filename"></stringProp>
    <stringProp name="script">import java.text.DecimalFormat;

long responseTimeMs = prev.getTime();
float duration = responseTimeMs / 1000.0f;
DecimalFormat decimalFormat = new DecimalFormat("0.000");
props.put("getDTS_response", decimalFormat.format(duration));</stringProp>
</BeanShellPostProcessor>

补充说明

如果你使用的是JMeter 3.1及以上版本,更推荐使用JSR223 PostProcessor替代BeanShell PostProcessor,执行性能更高,上述脚本代码可直接复用无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 18:54:04