微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jmeter - 使用 JSR223 后处理器调用 javascript

如何解决Jmeter - 使用 JSR223 后处理器调用 javascript

我使用正则表达式捕获了 6 个元素。说

Variable : UserDetails
Regular Expression : loadHeadWorkFlow\('(.+?)','(.+?)','/I
Template : $1$$2$$3$$4$$5$$6$

现在我可以通过 UserDetails_g1、UserDetails_g2.....UserDetails_g6 访问这些值

接下来,需要使用 javascript 文件对这 6 个值进行加密。该文件包含逻辑。

我的代码应该如何使用 JSR223 后处理器?

我遵循的步骤:

1.

load('Encryption.js');

   var result = encrypt("${UserDetails_g1}","password");
   log.info("encrypted value is "+result);
   vars.put("LoginDataString",result);

   var result1 = encrypt("${UserDetails_g2}","password1");
   vars.put("UserId",result1);

   var result2 = encrypt("${UserDetails_g3}","password2");
   vars.put("RoleId",result2);

一个值已正确加密。但其他值不正确。如果我为每个变量添加单独的后处理器。所有加密值均正确显示

有没有一种方法可以让我使用单个后处理器来执行所有 6 种加密。提前致谢

问候, 阿吉特

解决方法

从 JMeter 的角度来看没有问题,只需使用 Debug Sampler and View Results Tree listener combination. 检查您的 UserDetails_g2 变量是否具有预期值,您可能需要检查此 encrypt() 函数实现。

另一个可能的原因是 JavaScript 语言选择本身,根据 JMeter Best Practices it's recommended to use Groovy language for scripting,Nashorn 引擎性能在负载方面是一个很大的问号,因此您可能需要考虑重新编写函数在 Groovy 中

,

使用 vars 代替 ${} 语法

 var result = encrypt(vars.get("UserDetails_g1"),"password");
 log.info("encrypted value is "+result);
 vars.put("LoginDataString",result);

 var result1 = encrypt(vars.get("UserDetails_g2"),"password1");
 vars.put("UserId",result1);

 var result2 = encrypt(vars.get("UserDetails_g3"),"password2");
 vars.put("RoleId",result2);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。