JMeter中如何在Groovy/Beanshell内调用__stringToFile函数
Groovy中调用__StringToFile函数的实现方法
__StringToFile对应的JMeter核心类为org.apache.jmeter.functions.StringToFile,调用时按参数顺序传入字符串数组即可,以下是不同场景的示例:
基础调用(仅必填参数)
默认不追加内容,使用JMeter默认编码写入:
// 可直接传入Groovy自定义变量,也可通过vars.get()获取JMeter变量 def writeContent = vars.get("user_id") + "," + vars.get("order_amount") + "\n" new org.apache.jmeter.functions.StringToFile().compute([ "/path/to/your/result.csv", // 第一个参数:目标文件路径 writeContent // 第二个参数:待写入内容 ] as String[])
开启追加模式(适配多线程写同个CSV场景)
第三个参数传字符串格式的"true"开启追加,避免覆盖之前的写入内容:
def writeContent = "${vars.get('mobile')},${vars.get('resp_time')}\n" new org.apache.jmeter.functions.StringToFile().compute([ "/data/jmeter/report/user_access.csv", writeContent, "true" // 第三个参数:是否追加,必须传字符串格式的true/false ] as String[])
完整参数调用(指定编码)
第四个参数传入需要的文件编码:
def writeContent = "${vars.get('mobile')},${vars.get('resp_time')}\n" new org.apache.jmeter.functions.StringToFile().compute([ "/data/jmeter/report/user_access.csv", writeContent, "true", "UTF-8" // 第四个参数:指定文件编码 ] as String[])
注意事项
- 所有传入的参数都必须是字符串类型,布尔值的追加标识不能直接传
true,要传"true"字符串 __StringToFile内部自带文件锁机制,多线程并发写入同个文件不会出现内容错乱、竞态问题,完全适配你的使用场景- 若写入内容包含逗号、换行等CSV特殊字符,建议提前给内容包裹双引号,避免后续CSV解析出错
内容的提问来源于stack exchange,提问作者just_a_tester
相关产品推荐
相关产品推荐

