如何在ThreadNum

时间:2018-08-23 15:54:08

标签: jmeter counter

我想在ThreadNum * 1000处开始我的计数器。因此,我尝试了各种方法,但似乎都无效。我想念什么吗?

例如

      <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
        <stringProp name="CounterConfig.start">${__jexl2(ctx.getThreadNum()*1000)}</stringProp>
        <stringProp name="CounterConfig.end">999999</stringProp>
        <stringProp name="CounterConfig.incr">1</stringProp>
        <stringProp name="CounterConfig.name">TOTP</stringProp>
        <stringProp name="CounterConfig.format">000000</stringProp>
        <boolProp name="CounterConfig.per_user">true</boolProp>
        <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
      </CounterConfig>

我正在HTTP POST中进一步使用计数器作为参数,并且可以看到该参数始终从000001开始。

我将使用__counter变量作为POST参数,但是看起来您不能使用__counter来执行前面的零。

我尝试使用beanshell创建一个名为START的外部变量:

    <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
      <stringProp name="BeanShellSampler.query">vars.put (&quot;START&quot;, &quot;0&quot; + ctx.getThreadNum() * 1000 );
</stringProp>
....
<stringProp name="CounterConfig.start">${START}</stringProp>
....

具有一个前一个零,尽管看到START值01000和02000(如果我在POST请求中添加$ {START}作为参数),我的计数器仍从000000开始。

即使只是在$ {__ threadNum}处启动计数器,似乎也没有使其从ThreadNum处开始。这是不接受变量值的字段吗?

2 个答案:

答案 0 :(得分:-1)

我无法使用最新的JMeter 4.0

重现您的问题

JMeter Counter with Variable and Functions Expression

JMeter以001000开头,并以002000003000等开头。

JMeter Counter start from 1000

因此,请尝试升级到JMeter 4.0(或JMeter Downloads页上可用的最新版本),然后尝试全新安装。如果没有帮助,请检查 jmeter.log 文件中是否有可疑条目。另外,请确保您在JMeter安装目录的“ lib / ext”文件夹中拥有ApacheJMeter_functions.jar(如果从Java程序运行JMeter,则在项目Classpath中)

答案 1 :(得分:-1)

我认为这是OSX问题。

两个窗口都使用相同的脚本。在左侧的OSX下运行,在右侧的Windows下运行:

OSX vs Windows

您可以在左侧看到,大多数TOTP都具有相同的值,当我初次这样做时,它们到处都是相同的。

在右边,它们是线程号-除突出显示的线程号外,它在线程8中重新使用“ 6”。大多数情况下Windows正确,但有时则错误。 WTF?

从命令行运行,我在两个平台上都遇到相同的问题。有时候成功或多或少都正确无误……所以我认为这是一个Jmeter问题!