jmeter 如何在BeanShell中解决这个问题?

wpcxdonn  于 4个月前  发布在  Shell
关注(0)|答案(1)|浏览(52)

我正在使用此脚本更新JSON文件中值

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.apache.commons.io.FileUtils;

try {

    String filePath = "blob";
    File file = new File(filePath);
    String jsonContent = FileUtils.readFileToString(file, "UTF-8");

    JSONParser parser = new JSONParser();
    JSONObject jsonObject = (JSONObject) parser.parse(jsonContent);

    String extractedValue1 = vars.get("CASE_TYPE_ID");
    jsonObject.get("caseType").put("id",extractedValue1);
    String extractedValue2 = vars.get("CASE_CONFIG_ID");
    jsonObject.put("caseConfigId", extractedValue2)

    FileUtils.writeStringToFile(file, jsonObject.toJSONString(), "UTF-8");
} catch (Exception e) {
    log.error("Error updating JSON file: " + e.getMessage());
}

字符串
当我运行脚本时,我得到了这个错误:
在文件中:在线评估:在第20行第5列遇到了“文件实用程序”。
如何解决这一问题?

wbgh16ku

wbgh16ku1#

你的代码中有一个语法错误,第18行必须以一个后缀结尾。
除此之外:
1.从JMeter 3.1开始,您应该使用JSR223测试元素和Groovy语言进行脚本编写,因此请考虑迁移到Groovy。更多信息:Beanshell vs. JSR223 vs. Java For JMeter: Complete Showdown

  1. Groovy has built-in JSON support,所以你不需要使用第三方库。你可以使用的示例代码:
def original = new groovy.json.JsonSlurper().parse(new File('blob'))
original.caseType = vars.get('CASE_TYPE_ID')
original.caseConfigId = vars.get('CASE_CONFIG_ID')

new File('blob').withWriter { writer ->
    writer << new groovy.json.JsonBuilder(original).toPrettyString()
}

字符串
1.如果您运行测试时有> 1个用户,他们将同时写入同一个文件(race condition),这将导致数据损坏或丢失。请考虑使用不同的文件名,或者如果无法使用不同的文件夹,则使用不同的文件夹,每个用户一个。

相关问题