0

在我的帖子请求中创建一个作业,其响应只有以下 ID,

{"id":626}

我想将 626 的 id 值保存在 csv 或任何文件中,并且在我的测试完成后,我想使用该文件中的所有这些值来检查tear down线程组中作业的状态。

如何完成这个?我有以下脚本,但出现错误,

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry.get('id') << System.getProperty('line.separator')
}

错误详情,

2021-01-15 12:13:05,699 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 PostProcessor
javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.get() is applicable for argument types: (String) values: [id]
Possible solutions: getAt(java.lang.String), next(), grep(), grep(java.lang.Object), wait(), abs()
4

2 回答 2

0

只需更改entry.get('id')为just entry,它应该可以工作:

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry << System.getProperty('line.separator')
}

但是,您的方法存在潜在问题,如果您使用 > 1 个线程运行脚本,当多个线程同时写入同一个文件时,您可能会遇到竞争条件,因此更防错的方法是:

  1. 将下一行添加到user.properties文件:

    sample_variables=id
    
  2. 使用JSON JMESPath Extractor从响应中提取 id,配置如下:

    在此处输入图像描述

  3. 使用灵活的文件写入器将值写入文件:

    在此处输入图像描述

于 2021-01-15T07:58:58.113 回答
0

是的,同意 Dmitri 更喜欢第二种选择,而且只是吹线应该解决你的问题。

new groovy.json.JsonSlurper().parse(prev.getResponseData()).id.each { entry ->
    new File('result.csv') << entry << System.getProperty('line.separator')
}

就像德米特里提到的那样。

于 2021-01-15T10:05:40.393 回答