JMeter Beanshell 向 cookie 值添加反斜杠

JMeter Beanshell adds backslash to cookies values

我正在为其准备性能脚本的应用程序是在 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 中。

我还需要添加另一个 cookie,其值类似于 JSON。

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

这个新 cookie (jsonCookie) 的值在调试采样器中看起来很好。当我在请求中查找相同的 cookie 时,Cookie 变量在双引号中添加了额外的转义字符。

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 值是相同的。

您可以将 "Cookie Policy" 下拉菜单更改为 netscape 以删除这些 "extra slashes"

实际上我认为这里不需要编写脚本,因为您可以通过 User-Defined Cookies 部分添加自定义 cookie,例如:

更多建议:

  1. 不要 运行 JMeter 和被测应用程序与 JMeter 在同一台机器上 非常 资源密集型,您可能会遇到 JMeter 和应用程序在同一台机器上的情况测试将努力争取 OS 资源
  2. 如果您必须编写脚本,请考虑切换到 JSR223 PreProcessor and Groovy language as when it comes to high loads Beanshell performance might be a big question mark