【问题标题】:JMeter- extract 'id' variables from JSON response and save it in CSV file and use it in tear down threadJMeter- 从 JSON 响应中提取“id”变量并将其保存在 CSV 文件中并在拆解线程中使用
【发布时间】:2021-01-15 07:38:09
【问题描述】:

在我的帖子请求中创建一个作业,其响应只有以下 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()

【问题讨论】:

    标签: jmeter jsr223 json-extract post-processor


    【解决方案1】:

    只需将 entry.get('id') 更改为 entry 即可:

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

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

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

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

    3. 使用Flexible File Writer 将值写入文件:

    【讨论】:

    • Dmitri,是的,第二个选项更可行,一个简单的问题假设我有多个步骤,并且很少有人生成这个工作 ID,然后可以将相同的文件用于相同的条件.
    【解决方案2】:

    是的,同意 Dmitri 更喜欢第二个选项,只需吹线就可以解决您的问题。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2017-04-18
      • 1970-01-01
      相关资源
      最近更新 更多