JMeter 2.13 版 r1665067
因此,在 CookieManager 中使用用户定义的变量和/或 JMeter 属性变量时,我似乎遇到了一些麻烦。
如果我在 CookieManager 中使用变量作为 Cookie 的值,无论它是用户定义的 Var 还是属性 Var,我在尝试查看 BeanShell Pre 和 PostProcessor 中的 Cookie 值时都会遇到同样的问题。
如果我的 Cookie 管理器有以下内容:*第一行是使用属性变量时,第二行是使用用户定义变量中的 var 时,*仅供参考,这两行不是同时使用:
饼干管理器:
NAME VALUE DOMAIN PATH
1st) MYID ${__P(propCookie)} www.mydomain.com /
OR
2nd) MYID ${userCookie} www.mydomain.com /
propCookie变量在 CLI上传递或在 .properties 文件中定义,如下所示:
COMMAND-LINE --> -JpropCookie=SRV1
IN PROP FILE --> propCookie=SRV1
userCookie变量在用户定义变量配置元素中定义,如下所示:
NAME VALUE DESCRIPTION
userCookie ${__P(propCookie)} User var using prop variable as value
然后,当我运行测试时,我可以在结果树的“请求”选项卡中看到它正在显示 Cookie,并且它分配了正确的值,这很好……但是当我尝试在BeanShell Pre/Post-Processor,它只显示变量而不是实际值。
BeanShell 预处理器代码
import org.apache.jmeter.protocol.http.control.Cookie;
import org.apache.jmeter.protocol.http.control.CookieManager;
log.info("### Inside BeanShell PreProcessor:");
CookieManager manager = sampler.getCookieManager();
log.info("Cookie Count = '" + manager.getCookieCount() + "'");
for (int i = 0; i < manager.getCookieCount(); i++) {
Cookie cookie = manager.get(i);
log.info("\t\t Cookie.getName() = '" + cookie.getName() + "'");
log.info("\t\t Cookie.getValue() = '" + cookie.getValue() + "'");
}
这是 BeanShell 脚本在日志中的输出:
2015/04/29 14:33:00 INFO - jmeter.util.BeanShellTestElement: ### Inside BeanShell PreProcessor:
2015/04/29 14:45:58 INFO - jmeter.util.BeanShellTestElement: Cookie Count = '1'
2015/04/29 14:33:00 INFO - jmeter.util.BeanShellTestElement: Cookie.getName() = 'MYID'
2015/04/29 14:33:00 INFO - jmeter.util.BeanShellTestElement: Cookie.getValue() = '${userCookie}'
因此,正如您在 BeanShell 的输出中看到的那样,getValue()函数正在打印分配给 Cookie 值的变量,就像这样 -->“ ${userCookie} ”,而不是实际 Cookie 的值,即“ SRV1 ”...
最后,如果我尝试使用应该自动创建的“COOKIE_”变量,并且我在 BeanShell 中使用它,vars.get("COOKIE_MYID") ,它每次都会打印“null” ......我拥有所有在jmeter.properties文件中设置了正确的 Cookie 属性,就像这里的这些,所以我不确定问题是什么:
CookieManager.allow_variable_cookies=true
CookieManager.save.cookies=true
CookieManager.name.prefix=COOKIE_
我对为什么会发生这种情况感到非常困惑,所以如果有人对为什么会发生这种情况有任何想法,请随时不胜感激!
提前致谢,
马特