【性能测试】jmeter如何写入数据到文件,做持久化保存
在 JMeter 中,不仅可以从文件中读取数据,还可以将数据写入文件。这对于需要将从 API 或数据库获取的数据持久化存储的情况非常有用。下面详细说一下如何使用 JMeter 的 Beanshell 脚本来实现这一功能。
使用 Beanshell 脚本将数据写入文件
步骤 1: 准备测试计划
-
新建一个 JMeter 测试计划:
- 打开 JMeter,新建一个测试计划。
-
添加线程组:
- 右键点击测试计划,选择“添加” -> “Threads (Users)” -> “Thread Group”。
步骤 2: 定义变量
-
添加用户自定义变量:
- 在线程组中,右键点击,选择“添加” -> “配置元件” -> “User Defined Variables”。
-
定义变量:
- 在 User Defined Variables 中定义两个变量
v1
和v2
,并分别赋值。
例如:
v1=value1 v2=value2
- 在 User Defined Variables 中定义两个变量
步骤 3: 添加 Beanshell Sampler
-
添加 Beanshell Sampler:
- 在线程组中,右键点击,选择“添加” -> “Sampler” -> “Beanshell Sampler”。
-
编写 Beanshell 脚本:
- 在 Beanshell Sampler 中编写脚本,将变量写入文件。
示例脚本如下:
import org.apache.jmeter.services.FileServer; // 获取变量值 String v1 = vars.get("v1"); String v2 = vars.get("v2"); // 文件路径 String filepath = FileServer.getFileServer().getPropDefault("user.files.dir", "/tmp") + "/id_test.txt"; // 将数据写入文件 try { // 创建文件对象 java.io.File file = new java.io.File(filepath); // 创建文件输出流 java.io.FileWriter writer = new java.io.FileWriter(file, true); // 追加模式 // 写入数据 writer.write(v1 + "," + v2 + "\n"); // 可以根据需要修改分隔符 // 关闭输出流 writer.close(); // 输出确认信息 log.info("Data written to file: " + filepath); } catch (Exception e) { log.error("Error writing to file: " + filepath, e); }
vars.get()
用于获取变量值。FileServer.getFileServer().getPropDefault("user.files.dir", "/tmp")
用于获取默认的文件路径,可以根据需要修改。java.io.FileWriter
用于创建文件输出流,并将数据写入文件。
步骤 4: 添加监听器
-
添加 Debug Sampler:
- 在线程组中,右键点击,选择“添加” -> “Sampler” -> “Debug Sampler”。
-
添加结果树:
- 在线程组中,右键点击,选择“添加” -> “Listener” -> “View Results Tree”。
步骤 5: 运行测试计划并查看结果
-
运行测试计划:
- 保存测试计划并运行。
-
查看结果:
- 查看 Debug Sampler 的输出,确认变量获取情况。
- 查看结果树,确认 Beanshell Sampler 的执行情况。
-
检查文件写入情况:
- 在本地文件系统中查看文件
id_test.txt
,确认数据是否已正确写入。
- 在本地文件系统中查看文件
实践过程
Beanshell Sampler 配置截图
Debug Sampler 配置截图
运行结果
当你运行测试计划时,JMeter 会将变量 v1
和 v2
的值写入文件 id_test.txt
。你可以通过结果树查看 Beanshell Sampler 的执行情况,并在本地文件系统中检查文件写入情况。
写入 CSV 格式
如果你想将数据写入 CSV 文件,只需稍作修改即可:
// 将数据写入文件
try {
// 创建文件对象
java.io.File file = new java.io.File(filepath);
// 创建文件输出流
java.io.FileWriter writer = new java.io.FileWriter(file, true); // 追加模式
// 写入数据
writer.write(v1 + "," + v2 + "\n"); // 使用逗号作为分隔符
// 关闭输出流
writer.close();
// 输出确认信息
log.info("Data written to file: " + filepath);
} catch (Exception e) {
log.error("Error writing to file: " + filepath, e);
}
总结
使用 JMeter 的 Beanshell 脚本来将数据写入文件。这种方式不仅适用于简单的文本文件,也支持 CSV 格式。通过这种方式,你可以将从 API 或数据库获取的数据持久化存储,方便后续分析和处理。
文章原创首发于微信公众号 软件测试微课堂,更多内容欢迎关注微信公众号查看