在ThreadGroups之间传递多个值 - Jmeter

时间:2013-01-16 07:44:36

标签: testing jmeter load-testing stress-testing

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

${__setProperty(USERNAMEGlobal, ${USERNAME})}
${__setProperty(PASSWORDGlobal, ${PASSWORD})}

现在在ThreadGroup2中我使用这些凭据:

${__property()}

它适用于单个用户,但如果我尝试多个用户(请求),则最后一个值会覆盖先前的所有值,而ThreadGroup2仅接收定义的最后一个凭据。

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

如何做到这一点?

PS:我定义了加速期= 1,用户数= 3,循环= 1。

3 个答案:

答案 0 :(得分:0)

有一些选择:

  • Inter-Thread Communication
  • 将它们放到不同的属性中:

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

答案 1 :(得分:0)

看起来您可以将所有用户名 - 密码对保存到ThreadGroup1中的文件csv文件中,然后通过例如在ThreadGroup2中重复使用它们。阅读CSV Data Set Config

答案 2 :(得分:0)

我想知道你是否真的需要两个独立的ThreadGroup?

您似乎只需要一个ThreadGroup,您应该在其中执行登录操作,然后在 vars 中保存用户/通行证参数,而不是道具。 Vars是线程本地的,因此一个线程的值不会覆盖另一个线程的值。

您可以在脚本中设置变量:vars.put("var_name", "var_value"),然后像${var_name}一样使用它。 Another选项设置变量。