为JMeter JavaScript引擎设置十进制分隔符 问题

为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组 这在我的工作站上可以正常工作。但是,

我的JMeter测试使用如下JS表达式计算应分配给线程组的线程数量:

  • 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解决方案,因为它最接近我想要的。