JMeter Beanshell为cookie值添加了反斜杠

时间:2017-12-28 16:20:13

标签: json cookies jmeter backslash beanshell

我正在准备性能脚本的应用程序是在Sails上实现的,并使用cookie来验证API调用的身份验证。使用JMeter的HTTP Cookie管理器没有帮助,因为它没有记录所有cookie值。我能够使用beanshell预处理器手动添加它们

beanshell代码片段:

CookieManager manager = sampler.getCookieManager();
Cookie cookie1 = new Cookie("cookie1","someValue","localhost","/",false,0);
manager.add(cookie1);

此代码已成功将cookie1添加到JMeter中的cookie中。

我还需要添加另一个类似于JSON的cookie。

CookieManager manager = sampler.getCookieManager();
Cookie jsonCookie = new Cookie("cookie1","{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}","localhost","/",false,0);
manager.add(jsonCookie);

这个新cookie(jsonCookie)的值在Debug Sampler中看起来很好。当我在Request中查找相同的cookie时,Cookie变量会在doublequote中添加其他转义字符。

Http Request Cookie Data:
cookie1=somevalue;jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}"
Debug Sampler value
COOKIE_cookie1=somevalue
COOKIE_jsonCookie="{\"Element\":{\"child1\":\"child1value\",\"child2\":\"child2value\"}" 

在cookie数据中添加额外的转义字符会导致身份验证失败。如何确保cookie值没有这些额外的转义字符?

我尝试从用户定义的变量中获取这些json值,并直接在Beanshell预处理器中传递它们。在这两种方法中,得到的cookie值都是相同的。

1 个答案:

答案 0 :(得分:0)

您可以更改" Cookie政策"下拉到netscape以删除这些"额外的斜杠"

JMeter Cookie Manager Policy Netscape

实际上,我在这里看不到任何脚本需求,因为您可以通过User-Defined Cookies部分添加自定义Cookie,例如:

JMeter Define Cookie

还有一些建议:

  1. 不要在与JMeter相同的机器上运行JMeter和正在测试的应用程序非常资源密集型,当JMeter和被测应用程序在操作系统上挣扎时,您可能会遇到这种情况资源
  2. 如果您必须编写脚本,请考虑切换到JSR223 PreProcessorGroovy语言,就像高负载时一样Beanshell performance might be a big question mark