我正在尝试使用从数据库中获取的值来声明我的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")
从我的数据库获取值。
答案 0 :(得分:2)
您可以改用 Objects.equals
ServiceReference1.ServiceClient client2 = new ServiceReference1.ServiceClient();
try
{
var res = client2.SayHelloAsync();
Console.WriteLine(res.Result);
}
catch (Exception)
{
throw;
}
如果参数彼此相等,则返回true,否则返回false。
对于整数,您可以使用Objects.equals(vars.getObject("dbData").get(i).get("DbData"), ${codeid_API});
和==
进行比较
as int
答案 1 :(得分:1)
不要将${codeid_API}
形式的JMeter变量内嵌到Groovy脚本中,如果启用了已编译的脚本缓存,则将仅解析一次,这可能会破坏脚本逻辑。
考虑将其替换为vars.get('codeid_API
),其中vars
是JMeterVariables类实例的简写
从JSR223 Sampler文档中引用:
JMeter在将脚本字段传递给解释器之前先处理函数和变量引用,因此这些引用将只解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这可能会导致语法错误。为了使用运行时变量,请使用适当的props方法,例如
props.get("START.HMS"); props.put("PROP1","1234");