处理多个cookie并在jmeter中的下一个线程中使用

时间:2018-07-03 10:11:08

标签: jmeter beanshell

在我的JMeter测试计划中,我的应用程序生成了两个cookie“ XSRF-Token”和“ laravel_session”。在一个线程中,我有登录请求,而另一个线程中,有内部页面。我已经在测试计划级别定义了HTTP COOKIES Manager,但无法正常工作。 然后我尝试使用BeanShell预处理器和后处理器,这是我的代码: 登录线程中的Beanshell后处理器:

props.put("MyCookie","${COOKIE_XSRF-TOKEN}");
props.put("MyCookie1","${COOKIE_laravel_session}");

Beanshell pre-processor in another thread:

import org.apache.jmeter.protocol.http.control.CookieManager;

import org.apache.jmeter.protocol.http.control.Cookie;

CookieManager manager = sampler.getCookieManager();

Cookie cookie = new Cookie("XSRF-TOKEN",props.get("MyCookie"),"mydomain","/",true,0);
manager.add(cookie);

Cookie cookie1 = new Cookie("laravel_session",props.get("MyCookie1"),"mydomain",/",true,0);
manager.add(cookie1);

有什么主意我该如何管理多个cookie并进行设置,以便我的下一个线程可以正常运行?

1 个答案:

答案 0 :(得分:0)

首先,使用Cookie管理器检查是否对第一个请求设置了cookie。如果您的登录请求在视图结果树侦听器中显示cookie。如果不是这种情况,那么应用程序可能会出现问题。检查底部的第二个链接。

解决方法:- 将以下行添加到bin文件夹下的user.properties文件中

CookieManager.save.cookies=true

重新启动JMeter以获取属性

现在,您应该可以在需要时将Cookie值引用为$ {COOKIE_XSRF-TOKEN},例如,添加另一个HTTP Cookie Manager作为第二个请求的子代,并定义XSRF_TOKEN和laravel会话。

您不需要使用两个线程组来将cookie从一个线程组提供给另一个线程组。要获取Cookie并将其提供给下一个请求,请在单个线程组中执行此操作。

有关在JMeter测试中处理cookie的更多信息,请参见下面的JMeter文章。 https://www.blazemeter.com/blog/using-http-cookie-manager-jmeter-not-cookie-jar https://www.blazemeter.com/blog/http-cookie-manager-advanced-usage-a-guide

希望有帮助。