一、环境准备
1、引入操作EXcel文件的包
2、安装JMeter:确保已安装JMeter。
Java环境:确保系统中已安装JDK,并配置了JAVA_HOME环境变量。
二、脚本准备
1. 配置JMeter测试计划
创建线程组
- 添加线程组:
- 右键点击“测试计划 (Test Plan)”,选择“添加 (Add)” -> “线程 (Threads (Users))” -> “线程组 (Thread Group)”。
添加HTTP请求
-
添加HTTP请求采样器:
- 右键点击“线程组 (Thread Group)”,选择“添加 (Add)” -> “取样器 (Sampler)” -> “HTTP请求 (HTTP Request)”。
-
配置HTTP请求:
- 设置请求的URL、方法和其他参数。
添加JSR223后置处理器
-
添加JSR223后置处理器:
- 右键点击“HTTP请求 (HTTP Request)”,选择“添加 (Add)” -> “后置处理器 (Post Processors)” -> “JSR223 PostProcessor”。
-
配置JSR223后置处理器:
- 语言选择Groovy。
- 将提供的代码粘贴到脚本区域。
变量配置
- DIR_PATH和FILE_NAME变量:
- 确保在测试计划中通过用户定义的变量或前置处理器设置
DIR_PATH
和FILE_NAME
变量。
- 确保在测试计划中通过用户定义的变量或前置处理器设置
`
import groovy.json.JsonSlurper
import org.apache.poi.hssf.usermodel.HSSFWorkbook
import org.apache.poi.ss.usermodel.*
import java.io.FileOutputStream
import java.io.File
import java.io.FileInputStream
// 解析 JSON 响应
def response = prev.getResponseDataAsString() // 获取响应数据
def jsonSlurper = new JsonSlurper() // 创建 JsonSlurper 实例
def jsonResponse = jsonSlurper.parseText(response) // 解析 JSON 响应
// 获取 "future" 数据
def futureData = jsonResponse.result.future // 获取 JSON 响应中的 "future" 数组
// 获取参数化的目录路径和文件名
String dirPath = vars.get("DIR_PATH") // 获取目录路径
String fileName = vars.get("FILE_NAME") // 获取文件名
String filePath = dirPath + "\" + fileName // 定义文件路径
File dir = new File(dirPath) // 创建 File 对象表示目录
// 检查并创建目录
if (!dir.exists()) { // 如果目录不存在
if (dir.mkdirs()) { // 创建目录
log.info("目录已创建: " + dirPath) // 记录日志,目录创建成功
} else {
log.error("创建目录失败: " + dirPath) // 记录日志,目录创建失败
}
} else {
log.info("目录已存在: " + dirPath) // 记录日志,目录已存在
}
File file = new File(filePath) // 创建 File 对象表示文件
// 创建或打开工作簿和工作表
Workbook workbook // 定义工作簿对象
Sheet sheet // 定义工作表对象
if (file.exists()) { // 如果文件存在
FileInputStream fis = new FileInputStream(file) // 创建文件输入流
workbook = new HSSFWorkbook(fis) // 打开现有工作簿
sheet = workbook.getSheetAt(0) // 获取第一个工作表
fis.close() // 关闭文件输入流
log.info("打开现有文件: " + filePath) // 记录日志,文件打开成功
} else {
workbook = new HSSFWorkbook() // 创建新的工作簿
sheet = workbook.createSheet("Weather Data") // 创建新的工作表
// 写入标题行
Row headerRow = sheet.createRow(0) // 创建标题行
Cell headerCell1 = headerRow.createCell(0) // 创建第一列单元格
headerCell1.setCellValue("Date") // 设置第一列标题
Cell headerCell2 = headerRow.createCell(1) // 创建第二列单元格
headerCell2.setCellValue("Temperature") // 设置第二列标题
Cell headerCell3 = headerRow.createCell(2) // 创建第三列单元格
headerCell3.setCellValue("Weather") // 设置第三列标题
log.info("创建新文件并写入标题行: " + filePath) // 记录日志,文件创建成功并写入标题行
}
// 获取当前工作表的行数
int rowCount = sheet.getLastRowNum() // 获取当前工作表的最后一行行号
// 遍历 "future" 数据并写入工作表
futureData.each { dayData -> // 遍历 future 数据
String date = dayData.date // 获取日期
String temperature = dayData.temperature // 获取温度
String weather = dayData.weather // 获取天气
Row row = sheet.createRow(++rowCount) // 创建新行
Cell cell1 = row.createCell(0) // 创建第一列单元格
cell1.setCellValue(date) // 设置第一列单元格值
Cell cell2 = row.createCell(1) // 创建第二列单元格
cell2.setCellValue(temperature) // 设置第二列单元格值
Cell cell3 = row.createCell(2) // 创建第三列单元格
cell3.setCellValue(weather) // 设置第三列单元格值
log.info("写入数据: 日期=" + date + ", 温度=" + temperature + ", 天气=" + weather) // 记录日志,写入数据
}
// 将工作簿写入文件
try {
FileOutputStream fileOut = new FileOutputStream(filePath) // 创建文件输出流
workbook.write(fileOut) // 将工作簿写入文件
fileOut.close() // 关闭文件输出流
log.info("天气数据已写入文件: " + filePath) // 记录日志,文件写入成功
} catch (Exception e) {
log.error("写入文件时出错: " + e.getMessage()) // 记录日志,文件写入错误
} finally {
workbook.close() // 关闭工作簿
}
`
标签:文件,log,读写操作,创建,单元格,Excel,目录,本地,写入 From: https://www.cnblogs.com/ShaoqiHe/p/18305565