“JMeter”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第99行: | 第99行: | ||
=== 执行命令和记录日志 === | === 执行命令和记录日志 === | ||
<syntaxhighlight lang="bat"> | <syntaxhighlight lang="bat"> | ||
− | E:\record\2025\07\23>K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t "E:\record\2025\07\22\HTTP Request.jmx" -l "E:\record\2025\07\23\result.jtl" | + | E:\record\2025\07\23>K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t "E:\record\2025\07\22\HTTP Request.jmx" -l "E:\record\2025\07\23\result.jtl" -f |
− | |||
</syntaxhighlight>默认在哪执行命令,日志就输出在哪个路径里了,像上面这个命令日志就输出到 <code>E:\record\2025\07\23</code> 这个目录下面了 | </syntaxhighlight>默认在哪执行命令,日志就输出在哪个路径里了,像上面这个命令日志就输出到 <code>E:\record\2025\07\23</code> 这个目录下面了 | ||
* | * |
2025年7月23日 (三) 15:01的版本
不要使用 GUI 模式进行负载测试!
仅在测试创建和调试阶段使用 GUI 模式。
负载测试应使用 CLI 模式(非 GUI 模式),命令格式如下:
jmeter -n -t [测试脚本.jmx] -l [结果文件.jtl] -e -o [网页报告输出路径]
例:
K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t K:\record\2025\07\10\test_jmeter.jmx -l K:\record\2025\07\10\结果文件.jtl -e -o K:\record\2025\07\10\report.html
建议根据测试需求调整 Java 堆内存大小
修改 JMeter 批处理文件(jmeter.bat
或jmeter.sh
)中的环境变量:
HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
JSR223 PreProcessor 前置处理器
JSR223 PreProcessor 是 JMeter 中更高效的前置处理器
// 获取 JMeter 变量
def fileDir = vars.get("fileDir") // 文件路径变量
def filePath = fileDir + "/data.txt"
// 读取文件内容
def fileContent = new File(filePath).text
// 保存到 JMeter 变量
vars.put("fileData", fileContent)
日志
JSR223 提供了内置的 log
对象,支持不同级别的日志输出。日志会记录到 JMeter 的日志文件(jmeter.log
)中。
log.debug("这是调试信息,仅在调试模式显示")
log.info("这是普通信息")
log.warn("这是警告信息")
log.error("这是错误信息")
JMeter 默认会在 启动目录 生成 jmeter.log
,但需要确保:
1.日志级别正确:
编辑 JMeter 安装目录下的 jmeter.properties
文件,确保以下配置未被注释且级别为 INFO
或更低:
# 取消注释并设置为 INFO 或 DEBUG
log_level.jmeter=INFO
log_level.jmeter.util=INFO
2.日志文件路径未被修改:
确认 jmeter.properties
中没有自定义日志路径(搜索 log_file
字段,确保其被注释或指向正确路径):
#log_file=jmeter.log # 默认注释状态,使用启动目录
Groovy 读文件
1.读取文本文件为字符串:
// 获取 JMeter 变量
def fileDir = vars.get("fileDir") // 文件路径变量
def filePath = fileDir + "/data.txt"
// 读取文件内容
def fileContent = new File(filePath).text
// 保存到 JMeter 变量
vars.put("fileData", fileContent)
2.逐行读取文件(适用于大文件):
def filePath = "/path/to/large_file.csv"
def lines = []
new File(filePath).eachLine { line ->
lines.add(line)
// 可添加条件中断读取
if (lines.size() >= 100) return false
}
vars.put("first100Lines", lines.join("\n"))
前置处理器和后置处理器的执行顺序
jmeter接口测试其实就是取样器的执行过程,只不过通过不同的辅助元件产生不同特殊效果。
配置Jmeter日志
%jmeter_home%\bin\log4j2.xml
<File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false">
<PatternLayout>
<pattern>[%d] [%p] [%t] [%c{1.}]: %m%n</pattern>
</PatternLayout>
</File>
默认没有 %t 输出线程ID,也没有"[]",日志不易读
执行命令和记录日志
E:\record\2025\07\23>K:\record\2019\8\8\apache-jmeter-5.1.1\bin\jmeter -n -t "E:\record\2025\07\22\HTTP Request.jmx" -l "E:\record\2025\07\23\result.jtl" -f
默认在哪执行命令,日志就输出在哪个路径里了,像上面这个命令日志就输出到 E:\record\2025\07\23
这个目录下面了