JMeter版本2.13 r1665067
因此,在CookieManager中使用用户自定义变量和/或JMeter属性变量时,我似乎遇到了一些麻烦。
如果我在CookieManager中使用变量作为Cookie的值,无论它是用户定义的Var还是Property Var,我在尝试查看BeanShell Pre中的Cookie值时会遇到同样的问题和PostProcessor。
如果我的Cookie管理器具有以下内容: *第一行是使用属性变量时,第二行是使用用户定义变量中的var时,* FYI两行不同时使用:
CookieManager:
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前/后处理器中查看Cookie,它只显示变量而不是实际值。
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值的变量,就像这样 - &gt; “ $ {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_
我很难知道为什么会发生这种情况所以如果有人对于为什么会发生这种情况有任何想法,请随意我们将不胜感激!
先谢谢,
马特