如何在JMeter 5.2.1中参数化线程数

如何在JMeter 5.2.1中参数化线程数,jmeter,Jmeter,我有一个JMeter 5.2.1项目,在安装线程中,我生成的属性名为threadgroupname1numberofthreads,threadgroupname2numberofthreads,等等,其值表示整数 现在,我希望访问名为ThreadGroupName1、ThreadGroupName2等线程组中的这些属性,以参数化线程数。我尝试了类似于${props.get(threadName+“-NumberOfThreads”)}的方法,但由于threadName的计算结果为standar

我有一个JMeter 5.2.1项目,在安装线程中,我生成的属性名为
threadgroupname1numberofthreads
threadgroupname2numberofthreads
,等等,其值表示整数

现在,我希望访问名为
ThreadGroupName1
ThreadGroupName2
等线程组中的这些属性,以参数化线程数。我尝试了类似于
${props.get(threadName+“-NumberOfThreads”)}
的方法,但由于
threadName
的计算结果为
standardjmeterengine
而失败

另外,我尝试使用
ctx
但是
ctx.getThread()
ctx.getThreadGroup()
但是它们的计算结果为
null

到目前为止,对我来说“有效”的是
${\uuujexl3(props.get(“threadgroupname1numberofthreads”)}
,但我希望它由线程组的名称参数化

有可能这样做吗

这是
threadName
返回的
standardjmeterengine
错误吗

更新:事实上,提供参数化线程数的最简单的“解决方案”是
${p(threadgroupname1numberofthreads)}
,我想要的是生成这个键
threadgroupname1numberofthreads
,类似于
${MyCurrentGroupName}-NumberOfThreads
,有效地提供了一种具有抽象方法的方法,如

int GetNumberOfThreads(string threadGroupName)
{
  return properties.get(threadGroupName + "-NumberOfThreads";
}
类似地,我希望在恒定吞吐量计时器中使用此模式以及另一个前缀,如
-Rpm

您可以使用的
getThreadNum
获取线程数(增量,因为它以0开头)


我不认为您可以在的“线程数”字段中使用任何线程,所以这不是您可以通过UI执行的操作。如果你相信这是每个人都需要的,你可以考虑提高一个

作为一种解决方法,您可以

  • 将线程数设置为1
  • 添加到线程组并使用以下条件:

    ${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1,)}
    
  • 添加为If控制器的子级,并将以下代码放入“脚本”区域:


  • 这样,每个线程组通常以1个线程开始,但是该线程将读取您之前定义的属性,并根据需要添加尽可能多的线程

    你试过我的解决方案了吗?@user7294900,是的,谢谢你,但它不起作用,或者我想我无法理解。我会把问题更新得更清楚。@user7294900,我明白你的意思了。我想要当前的线程组名称;在索引上传递信息会很麻烦。无论如何,
    ctx.getThreadNum()
    返回0。我想当我尝试使用它时,
    ctx
    尚未创建。谢谢,我认为它必须工作,所以我接受你的答案。但因为我需要在每个组中添加元素,我认为这对我来说太过分了。我将直接使用这些值。我将添加一个增强请求。
    ${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1,)}
    
    SampleResult.setIgnore()
    2.upto(props.get(ctx.getThreadGroup().getName() + '-NumberOfThreads') as int, { ctx.getThreadGroup().addNewThread(0, ctx.getEngine()) })