问题描述
我使用正则表达式捕获了 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);