我试图在Jmeter中的不同线程中使用相同的cookie(即在主线程中捕获cookie并尝试在支持线程中传递它)。我已经阅读了文章
https://blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell
但它在我的情况下不起作用。在实施上述链接中给出的逻辑时,有人可以帮助识别我在做什么错误 请查看以下我正在遵循的步骤
Test Plan
- HTTP Cache Manager
- HTTP Header Manager
- HTTP Cookie Manager
- Main Thread(login page under main thread)
- Login (BeanShell PostProcessor under login)
- BeanShell PostProcessor
import org.apache.jmeter.protocol.http.control.CookieManager;
CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue();
props.put("cookiecount", String.valueOf(manager.getCookieCount()));
for (int i = 0; i < manager.getCookieCount(); i++)
{
props.put("cookie_name" + i, manager.get(i).getName());
props.put("cookie_value" + i, manager.get(i).getValue());
props.put("cookie_domain" + i, manager.get(i).getDomain());
props.put("cookie_path" + i, manager.get(i).getPath());
props.put("cookie_expires" + i, String.valueOf(manager.get(i).getExpires()));
props.put("cookie_secure" + i, String.valueOf(manager.get(i).getSecure()));
}
- Support Thread 1
- BeanShell PreProcessor
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
import org.apache.jmeter.testelement.property.JMeterProperty;
CookieManager manager = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager").getObjectValue();
int count = Integer.parseInt(props.getProperty("cookiecount"));
for (int i = 0; i < count; i++) {
Cookie cookie = new Cookie(props.getProperty("cookie_name" + i),
props.getProperty("cookie_value" + i),
props.getProperty("cookie_domain" + i),
props.getProperty("cookie_path" + i),
Boolean.parseBoolean(props.getProperty("cookie_secure" + i)),
Long.parseLong(props.getProperty("cookie_expires" + i)));
manager.add(cookie);
}
JMeterProperty cookieprop = ctx.getCurrentSampler().getProperty("HTTPSampler.cookie_manager");
cookieprop.setObjectValue(manager);
ctx.getCurrentSampler().setProperty(cookieprop);
- HTTP Request
运行1个线程后 - 1个循环为两个线程获取不同的cookie,如下所示
- Main Thread
Cookie Data:
JSESSIONID=PvRSWmBXNp9y65njGkRWbLlxLM1pvxLzpnyjThQDny3pMy6Gkcjv!486373045
- Support Thread
Cookie Data:
JSESSIONID=YVGsWmQSXdGt1xqfDDvlkgkHLpqJ3WRD2sDyqXp62rChfTDbM0Vj!486373045
我已设置CookieManager.save.cookies = true。
答案 0 :(得分:0)
只需为不同的线程组使用2个不同的HTTP Cookie Manager测试元素。
P.S。如果您已经设置了CookieManager.save.cookies=true
属性并且知道了cookie名称 - 您可以使用__setProperty()函数来传递在线程组之间保存cookie值的变量,如:
在第一个线程组中将变量转换为${__setProperty(JSESSIONID,COOKIE_JSESSIONID,)}
在第二个线程组中,将该属性称为${__P(JSESSIONID,)}