【问题标题】:Passing multiple values between ThreadGroups - Jmeter在线程组之间传递多个值 - Jmeter
【发布时间】:2012-12-30 11:34:08
【问题描述】:

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

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

现在在 ThreadGroup2 中,我使用以下凭据:

${__property()}

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

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

如何做到这一点?

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

【问题讨论】:

    标签: testing jmeter load-testing stress-testing


    【解决方案1】:

    我想知道您是否真的需要两个单独的线程组?

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我正在这样做......但现在我只在 ThreadGroup1 中阅读它们一次,然后使用 __setProperty 设置和获取变量(如上所述)但遇到问题(在问题中提到)
      • 对不起,也许我遗漏了一些东西,但不明白为什么要用 csv 改变一个相当简单的工作解决方案(看起来你必须在 TG2 中使用与 TG1 中相同的 csv 列表)来繁琐的一个在线程组之间传递多个属性?我怀疑每个用户存储 2 个属性比从 ThreadGroup2 中的 csv 再次读取相同的凭据消耗的资源更少。这有什么原因吗?
      • 我只在 threadGroup1 中读取 csv 文件,然后使用 TG2 中的所有变量我这样做是因为我也将一些其他变量传递给 TG2,这些变量是用户特定的。如果我在 TG2 中单独读取 CSV它向用户提供了错误的变量……例如,如果 user1 应该有变量 1,那么它可能会得到实际上应该提供给 User2 的变量 2。我希望在 TG2 中向每个用户传递特定变量... PS:这些变量是我在 TG1 中提出的一些请求的结果。
      • 我再解释一下,在 TG1 用户登录从 CSV 文件获取凭据并执行操作,例如创建一个帐户,现在生成一个帐号,此帐号必须与 user1 绑定...但是当我将此帐号提供给 TG2 并在从 CSV 读取凭据后再次登录 TG2 时,不能保证此帐号将提供给 user1,它可以提供给 user2....
      • 此外,我对 accountnumber 有类似的问题,即在 TG1 中,由于多个 HTTP 请求而生成了多个帐号。当我将其放入变量中以将其传递给 TG2 时,TG2 只会得到最后一个帐号,因为它已经覆盖了所有其他帐号。
      【解决方案3】:

      有一些选择:

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

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

      【讨论】:

      • 我不能这样做,因为我们每次都会在 csv 文件中定义随机数量的用户。还有其他方式吗?
      • "使用所有用户名初始化数组,将其字符串化,然后放入属性中。但是,它看起来像一个 hack,会减慢您的计划。" ... 这个怎么做?我对 Jmeter 没有太多经验,你能告诉我如何实现吗? ...代码 sn-p?
      猜你喜欢
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多