Testing 在线程组之间传递多个值-Jmeter

Testing 在线程组之间传递多个值-Jmeter,testing,jmeter,load-testing,stress-testing,Testing,Jmeter,Load Testing,Stress Testing,我有ThreadGroup1,它执行登录操作,使用CSV数据集配置从CSV文件获取凭据,并将用户名和密码保存在两个不同的变量中,如: ${__setProperty(USERNAMEGlobal, ${USERNAME})} ${__setProperty(PASSWORDGlobal, ${PASSWORD})} 现在在ThreadGroup2中,我使用以下凭据: ${__property()} 对于单个用户,它可以正常工作,但如果我尝试多个用户(请求),最后一个值将覆盖以前的所有值,Th

我有ThreadGroup1,它执行登录操作,使用CSV数据集配置从CSV文件获取凭据,并将用户名和密码保存在两个不同的变量中,如:

${__setProperty(USERNAMEGlobal, ${USERNAME})}
${__setProperty(PASSWORDGlobal, ${PASSWORD})}
现在在ThreadGroup2中,我使用以下凭据:

${__property()}
对于单个用户,它可以正常工作,但如果我尝试多个用户(请求),最后一个值将覆盖以前的所有值,ThreadGroup2只接收定义的最后一个凭据

我希望将所有凭据逐一传递给ThreadGroup2,然后ThreadGroup2中的请求应分别根据所有这些凭据工作

如何做到这一点


PS:我定义了爬升周期=1,用户数=3,循环数=1。

有一些选项:

  • 将它们设置为不同的属性:

    ${__setProperty(USERNAMEGlobal1, ${USERNAME1})}
    ${__setProperty(USERNAMEGlobal2, ${USERNAME2})}
    etc.
    
  • 使用所有用户名初始化数组,然后将其放入属性。然而,它看起来像是一个黑客,会减慢你的计划

看起来您可以将所有用户名密码对保存到ThreadGroup1中的csv文件中,然后通过读取等方式在ThreadGroup2中重新使用。

我想知道您是否真的需要两个单独的ThreadGroup

似乎您只需要一个线程组,在其中执行登录操作,然后将用户/传递参数保存在变量中,而不是保存在道具中。变量是线程本地的,因此一个线程的值不会覆盖另一个线程的值


您可以在脚本中设置变量:
vars.put(“var\u name”、“var\u value”)
,然后像
${var\u name}
一样使用它。设置变量的选项。

我不能这样做,因为每次在csv文件中定义的用户数量都是随机的。还有其他方法吗?“使用所有用户名初始化数组,将其字符串化,然后放入属性。但是,这看起来像是一个会减慢计划的黑客行为。”。。。如何做到这一点?我对Jmeter没有太多的经验,你能告诉我如何实现这个吗。。。代码片段?我正在做这个。。。但现在我在ThreadGroup1中只读了一次,然后使用uu setProperty(如上所述)设置和获取变量,但遇到了问题(在问题中提到)对不起,也许我遗漏了一些东西,但无法理解为什么要用csv更改非常简单的工作解决方案(看起来您必须在TG2中使用与TG1中相同的csv列表)在线程组之间传递多个属性会很麻烦吗?我怀疑每个用户存储2个属性会比在ThreadGroup2中再次从csv中读取相同的凭据消耗更少的资源。有什么原因吗?我只在threadGroup1中读取csv文件,然后使用TG2中的所有变量,我这样做是因为我是passing一些其他变量也被添加到TG2中,这些变量是用户特定的。如果我在TG2中单独读取CSV,它会向用户提供错误的变量…例如,如果user1应该有变量1,它可能会得到variable2,实际上应该提供给User2。我希望每个用户在TG2中都有特定的变量…PS:这些变量是我在TG1中发出的一些请求的结果。我对此进行了详细解释,在TG1中,用户登录从CSV文件获取凭据并执行操作(例如创建帐户),现在会生成一个帐户号,此帐户号必须与user1绑定…但当我将此帐户号提供给TG2并在之后再次登录TG2时从CSV读取凭据不能保证此帐号将提供给user1,它可以提供给user2…此外,我对accountnumber有类似的问题,在TG1中,由于多个HTTP请求而生成的多个帐号..当我将其放入变量以传递给TG2时,TG2只获得最后一个AccountUnt编号,因为它已覆盖所有其他AccountNumber。