为JMeter JavaScript引擎设置十进制分隔符 问题
我的JMeter测试使用如下JS表达式计算应分配给线程组的线程数量:为JMeter JavaScript引擎设置十进制分隔符 问题,jmeter,Jmeter,我的JMeter测试使用如下JS表达式计算应分配给线程组的线程数量: threadsGroupA表达式:${{{uuuu javaScript(${{uuuu属性(线程)}*${uuuu属性(threadPercentageA)}} threadsGroupB表达式: 传递给脚本的属性: threads=100 threadPercentageA=0.3 threadPercentageB=0.7 预期结果是:30个线程分配给A组,70个线程分配给B组 这在我的工作站上可以正常工作。但是,
表达式:threadsGroupA
${{{uuuu javaScript(${{uuuu属性(线程)}*${uuuu属性(threadPercentageA)}}
表达式:threadsGroupB
threads=100
threadPercentageA=0.3
threadPercentageB=0.7
预期结果是:30个线程分配给A组,70个线程分配给B组
这在我的工作站上可以正常工作。但是,当我尝试在服务器上运行它时,它不会创建线程,除非我在属性文件中使用逗号作为十进制分隔符:
threads=100
threadPercentageA=0,3
threadPercentageB=0,7
我正在寻找在任何环境中使用相同属性文件运行测试的方法。
我试过的
我试图通过添加-Duser.language=en-Duser.country=US-Duser.region=US
(以不同的排列方式)作为变量JMETER\u OPTS
,JMETER\u language
,并将其作为命令行参数直接传递给JMETER(),迫使JVM使用带有小数点的locale。所有这些似乎都没有任何效果
我的想法
我的结论是,问题发生在评估
\uuujavascript()
函数的JS引擎中。如果有一种为JS引擎设置语言环境的方法,我将能够检查这一点,这就是主题中的问题。使用groovy函数并在乘法之前将值转换为整数/双倍:
${__groovy(props.get("threads").toInteger() * Double.parseDouble(props.get("threadPercentageB")),)}
使用_groovy函数并在乘法之前将值转换为整数/双倍:
${__groovy(props.get("threads").toInteger() * Double.parseDouble(props.get("threadPercentageB")),)}
尝试对十进制值使用函数,如:
${__javaScript(${__property(threads)}*parseFloat(${__property(threadPercentageA))})}
如果输出也是十进制的——在JavaScript中,有一个函数可以显式地设置Number对象的区域设置,这样无论在何处运行,都可以确信它将返回点或逗号
也注意到,如果在JMLT测试中有大量的JavaScript,考虑迁移到或切换到或
有意义,请尝试使用函数来处理小数值,如:
${__javaScript(${__property(threads)}*parseFloat(${__property(threadPercentageA))})}
如果输出也是十进制的——在JavaScript中,有一个函数可以显式地设置Number对象的区域设置,这样无论在何处运行,都可以确信它将返回点或逗号
也注意到,如果在JMIT测试中有大量的JavaScript,考虑迁移到或切换到/< /P> JS解决方案是有意义的。 使用,其中:
原创创意的学分 常规解决方案 原创创意的学分 关于JMeter线程计数处理的注意事项 结果表明,JMeter将不接受小数部分的线程数,即使它是.0
。因此,上面的答案包括舍入函数。JS解决方案
使用,其中:
原创创意的学分
常规解决方案
原创创意的学分
关于JMeter线程计数处理的注意事项
结果表明,JMeter将不接受小数部分的线程数,即使它是
.0
。因此,上面的答案包括舍入函数。右括号的顺序有语法错误。我想你的意思是${uuuu javaScript(${uuuu属性(线程)}*parseFloat(${uuu属性(线程百分比a)}))}
(无法编辑我自己-编辑太小)。感谢您找到了一个有效的解决方案:最终使用toFixed()
获得整数。感谢有用的链接!右括号的顺序有语法错误。我想你的意思是${uuuu javaScript(${uuuu属性(线程)}*parseFloat(${uuu属性(线程百分比a)}))}
(无法编辑我自己-编辑太小)。感谢您找到了一个有效的解决方案:最终使用toFixed()
获得整数。感谢有用的链接!只需稍加调整,groovy方法就成功了!然而,我最终使用了基于Dmitri T的答案的JavaScript解决方案,因为它最接近我想要的!然而,我最终使用了基于Dmitri T的答案的JavaScript解决方案,因为它最接近我想要的。