我是jmeter&java新手,现在正在编写用于测试api的授权脚本。我在更新变量时遇到了一些问题 vars.put(key,value)
下面是我的代码示例:
import java.util.Arrays;
import java.security.MessageDigest;
import java.util.Base64;
public class StringToByte {
public void main(String[] args) {
String str_salt = "${salt}";
byte[] b_salt = str_salt.getBytes();
String str_pass = "c3000Hub";
byte[] b_pass = str_pass.getBytes();
byte[] b_pass_hash = new byte[b_salt.length + b_pass.length];
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(b_pass_hash);
String pass_hash = Base64.getEncoder().encodeToString(hash);
vars.put("passhash", pass_hash);
}
}
用户定义变量中的变量只是不更新,我不知道为什么?
1条答案
按热度按时间2w3kk1z51#
你需要明确地称之为
main()
函数为了使它工作,您声明了它,但我看不到它在哪里被调用改变
String str_salt = "${salt}";
到String str_salt = vars.get("salt");
,根据jsr223采样器文件:jsr223测试元素具有可以显著提高性能的特性(编译)。要从该功能中获益,请执行以下操作:
使用脚本文件而不是内联它们。如果此功能在scriptengine上可用,这将使jmeter编译并缓存它们。
或者使用脚本文本并检查缓存已编译脚本(如果可用)属性。
建议的代码更改(如果您希望保留此类/方法方法):
或者你可以做一些类似的事情:
关于jmeter中groovy脚本的更多信息:ApacheGroovy-为什么以及如何使用它