我试图用从数据库中获得的值来主张我的API响应数据。
我的代码无法比较我的变量,除非我将toString()
添加到两个变量中。有什么办法解决的还是toString()
强制性的?
所讨论的代码是:
Boolean comparision = false;
for (int i; i < vars.getObject("dbData").size(); i++) {
if (vars.getObject("dbData").get(i).get("DbData").toString().equals(${codeid_API}.toString()))
{
comparision = true;
}
}
${codeid_API}
是我存储API响应数据的变量。 (vars.getObject("dbData").get(i).get("DbData")
从我的数据库中获取值。
您可以使用objects.equals
Objects.equals(vars.getObject("dbData").get(i).get("DbData"), ${codeid_API});
如果参数彼此相等,则返回true,否则为false。
对于整数,您可以使用==
进行比较并使用as int
进行铸造
if (vars.getObject("dbData").get(i).get("DbData") as int == vars.get("codeid_API") as int );
不要以 ${codeid_API}
的形式嵌入jmeter变量到groovy脚本中,如果启用了启用的编译脚本缓存,则可以解决,它可能会破坏您的脚本逻辑。
考虑将其替换为 vars.get('codeid_API
),而不是 vars
是jmeterriables class实例
JSR223采样器文档的报价:
在将脚本字段传递给解释器之前,jmeter处理功能和变量引用,因此参考文献只能解决一次。脚本文件中的变量和功能引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的道具方法,例如
props.get("START.HMS"); props.put("PROP1","1234");
更多信息:调试JDBC采样器在Jmeter中导致