背景
看大家对 rest-assured 赞不绝口,自己尝试了下,有一个问题请教比较熟练的朋友。

问题
使用 jsonpath 过滤时,比如 findAll,如何引用自定义变量

String topic= jsonPath.getString("topics.find {it.id =='1234567'}");

这样可以筛选出 id=‘1234567’ 的 topic。
问题在于,每一个用例过滤的条件可能不一样,所以这里的 ‘1234567’ 最好用变量来代替。

尝试

  1. 了解到 rest-assured 基于 groovy 语法,想着在字符串中用 $ 来引用变量,比如


String ID = ‘1234567’;


String topic= jsonPath.getString("topics.find {it.id ==$ID}");

得到如下报错

java.lang.IllegalArgumentException: The parameter "$ID" was used but not defined. Define parameters using the JsonPath.params(...) function

  1. 然后我尝试用 jsonPath.param(k, v) 的形式添加变量 ID,然而并没有什么卵用

  2. 另外,我尝试字符串拼接,也未果

    String topic= jsonPath.getString("topics.find {it.id ==" + ID + "}");

    文档确实不多,大家都是如何解决这个问题的呢


↙↙↙阅读原文可查看相关链接,并与作者交流