代码之家  ›  专栏  ›  技术社区  ›  user2747610

JMeter Beanshell向cookies值添加反斜杠

  •  0
  • user2747610  · 技术社区  · 8 年前

    我正在为其编写性能脚本的应用程序在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变量在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 回复  |  直到 8 年前
        1
  •  0
  •   Dmitri T    8 年前

    您可以将“Cookie策略”下拉列表更改为 netscape 为了删除这些“额外斜杠”

    JMeter Cookie Manager Policy Netscape

    事实上,我认为这里不需要编写脚本,因为您可以通过 User-Defined Cookies 剖面图如下:

    JMeter Define Cookie

    还有几条建议:

    1. 不要在与JMeter相同的机器上运行JMeter和被测应用程序 非常 资源密集型,您可能会遇到这样的情况,即JMeter和被测应用程序将难以获得操作系统资源
    2. 如果必须编写脚本,请考虑切换到 JSR223 PreProcessor Groovy 高负荷时的语言 Beanshell performance might be a big question mark