jmeter计算模型token

import java.io.FileWriter
import java.io.BufferedWriter
import java.text.SimpleDateFormat
// 1. 获取本次请求的关键信息
def sampleLabel = prev.getSampleLabel() // 采样器名称
def responseCode = prev.getResponseCode() // 响应码
def responseData = prev.getResponseDataAsString() // 响应体
def timestamp = System.currentTimeMillis() // 时间戳(毫秒)
def success = prev.isSuccessful() ? "成功" : "失败" // 是否成功
def elapsedTimeMs = prev.getTime() // 获取原始耗时(毫秒)
def elapsedTimeSec = elapsedTimeMs / 1000.0 // 转换为秒(保留小数)
def requestTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()) // 易读的请求时间
def responseCharCount = responseData ? responseData.length() : 0 // 响应体字符数(空响应记0)
// 2. 计算吞吐量:ResponseCharCount / ElapsedTime(s) / 1.5
def throughput = 0.0
if (elapsedTimeSec > 0) { // 避免除以0报错
throughput = (responseCharCount / elapsedTimeSec) / 1.5
}
// 3. 处理响应数据中的特殊字符(避免破坏 CSV 格式)
def cleanResponse = responseData ? responseData
.replaceAll('"', '""') // 双引号转义
.replaceAll('\r?\n', '\\n') // 换行符转义
.replaceAll(',', '\\,') : "" // 逗号转义(空响应则为空字符串)
// 4. 定义 CSV 文件路径(改成你自己的路径)
def csvFile = new File("D:/miaobiapi/testshuju_response.csv")
// 5. 写入文件(追加模式,加锁避免并发写入冲突)
def writer = new BufferedWriter(new FileWriter(csvFile, true))
try {
// 如果文件不存在,先写入表头(新增吞吐量列)
if (csvFile.length() == 0) {
writer.write("RequestTime,Timestamp,SamplerLabel,ResponseCode,Success,ElapsedTime(s),ResponseCharCount,Throughput,ResponseData\n")
}
// 写入一行数据(吞吐量保留3位小数,保证格式统一)
writer.write(String.format("\"%s\",\"%d\",\"%s\",\"%s\",\"%s\",\"%.3f\",\"%d\",\"%.3f\",\"%s\"\n",
requestTime, timestamp, sampleLabel, responseCode, success, elapsedTimeSec, responseCharCount, throughput, cleanResponse))
} catch (Exception e) {
log.error("写入CSV失败:" + e.getMessage()) // 写入失败时打印日志
} finally {
writer.close() // 确保文件流关闭
}
浙公网安备 33010602011771号