对于我的 JMeter 测试,我想登录一次,然后使用多线程同时浏览应用程序中的报告。 我创建了两个连续运行的线程组,第一个线程组包含设置为使用一个线程运行的登录 HTTP 请求。第二个线程组包含我的应用程序中每个报告的 HTTP 请求,并且它设置为使用 50 个线程运行。
应用程序部署在 weblogic 服务器上,并且应用程序 session 是有状态的。
我想将登录成功后第一个线程组通过weblogic生成的JsessionID与第二个线程组的HTTP请求共享。
问题是第二个线程组中每个 HTTP 请求的 JsessionID 都是唯一的,并且与第一个线程组中登录 HTTP 请求的 JsessionID 都不同。因此,应用程序无法调用验证调用。
JsessionID 嵌入在 header 内的 cookie 中。我尝试使用正则表达式提取器从第一个线程组中的HTTP请求中提取它(参见附图)并在HTTP Cookie管理器中定义它,但问题仍然存在。 Regular Expression Extractor config
最佳答案
有一种更简单的方法可以使用 HTTP Cookie Manager 获取 JSESSIONID cookie 值。
将下一行添加到 user.properties 文件
CookieManager.save.cookies=true
- 重新启动 JMeter 以获取属性
- 完成后,您将能够在需要时以
${COOKIE_JSESSIONID}
形式访问 Cookie 值
为了使其在第二个线程组中可用,您需要使用 __setProperty() function 将其转换为 JMeter 属性。像:
${__setProperty(JSESSIONID,${COOKIE_JSESSIONID},)}
完成后,您将能够使用 __P() function 访问第二个线程组中的值为
${__P(JSESSIONID,)}
关于java - 如何在Jmeter中的两个线程组之间共享JSessionID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161528/