【发布时间】:2017-10-26 12:35:21
【问题描述】:
我正在开发 JMeter 3.3。我将有 n 个用户,登录应该只进行一次,但其他页面要执行多次。我发现该解决方案使用了 2 个不同的线程组,但由于我的登录名中有 cookie,因此无法正常工作。
我在Sharing cookie values between thread groups in JMeter 中看到了类似的用例,但没有一个解决方案有效。如何做到这一点?
【问题讨论】:
我正在开发 JMeter 3.3。我将有 n 个用户,登录应该只进行一次,但其他页面要执行多次。我发现该解决方案使用了 2 个不同的线程组,但由于我的登录名中有 cookie,因此无法正常工作。
我在Sharing cookie values between thread groups in JMeter 中看到了类似的用例,但没有一个解决方案有效。如何做到这一点?
【问题讨论】:
SetUp Thread Group 可以作为答案吗? (http://jmeter.apache.org/usermanual/component_reference.html#setUp_Thread_Group) - 我的意思是登录(并将 cookie 提取到变量)将在该设置组中完成,然后在“正常”线程组中进行其他测试 - 这将使用您的 cookie 读取全局可用变量。
【讨论】:
如果您每次迭代只需要登录一次用户,请使用Once only controller。 要在线程组之间共享 cookie,您可以使用 Inter-thread communication plugin
【讨论】:
通常如果您只想执行一次登录,您可以使用If Controller 条件为${__groovy(vars.getIteration() == 1,)} 其中:
vars - 是 JMeterVariables 类实例的简写,提供对 JMeter 变量的读/写访问。 vars.getIteration() 方法返回当前的 Thread Group 迭代,因此您放置在 If 控制器下的采样器将对每个虚拟用户仅执行一次。 【讨论】:
我从https://stackoverflow.com/a/43379806/8305811 获得了解决方案,但是通过将 CookieManager.save.cookies 设置为 true 并在测试计划级别设置 cookie 管理器。
【讨论】: