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

Jmeter - Calling javascript using JSR223 Post processor

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

Variable : UserDetails
Regular Expression : loadHeadWorkFlow\('(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','(.+?)','/I
Template : $$$$$$

现在我可以通过 UserDetails_g1、UserDetails_g2.....UserDetails_g6

访问这些值

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

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

我遵循的步骤:

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);

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

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

此致, 阿吉特

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

另一个可能的原因是 JavaScript 语言选择本身,根据 JMeter 最佳实践 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);