1

我正在尝试使用从数据库中获得的值来断言我的 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")从我的数据库中获取价值。

4

2 回答 2

2

您可以改用Objects.equals

Objects.equals(vars.getObject("dbData").get(i).get("DbData"), ${codeid_API});

如果参数彼此相等,则返回 true,否则返回 false。

对于整数,您可以比较 using==和 use as intfor cast

if (vars.getObject("dbData").get(i).get("DbData") as int == vars.get("codeid_API") as int );
于 2019-02-13T07:24:29.067 回答
1

不要将 JMeter 变量内联${codeid_API}到 Groovy 脚本中,如果启用了已编译的脚本缓存,它只会被解析一次,并且可能会破坏您的脚本逻辑。

考虑将其替换为vars.get('codeid_API) 而不是JMeterVariables类实例vars的简写在哪里

引用JSR223 Sampler文档:

JMeter 在将脚本字段传递给解释器之前处理函数和变量引用,因此这些引用只会被解析一次。脚本文件中的变量和函数引用将逐字传递给解释器,这很可能导致语法错误。为了使用运行时变量,请使用适当的 props 方法,例如

props.get("START.HMS");

props.put("PROP1","1234");

更多信息:在 JMeter 中调试 JDBC 采样器结果

于 2019-02-13T09:10:47.370 回答