来自 Java 代码的 JMeter 测试 - 生成与 GUI 报告相匹配的 Console/File 报告
JMeter test from Java Code - Generate Console/File Reports matching GUI Reports
我 运行 来自 Java 代码的 jmx 文件,并希望获得 console/file 报告。
public static void main(String[] args) throws Exception {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("path/jmeter.properties");
JMeterUtils.setJMeterHome("path/jmeter");
JMeterUtils.initLocale();
SaveService.loadProperties();
File in = new File("test.jmx");
HashTree testPlanTree = SaveService.loadTree(in);
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = "result.html";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
jmeter.configure(testPlanTree);
jmeter.run();
ReportGenerator generator = new ReportGenerator(logFile, null);
generator.generate();
}
运行 这段代码我生成了一个 html 文件:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1632316570010,1745,Created,500,,Requests 1-1,text,false,,417,1228,1,1,https://my.url,1740,0,1371
但是例如我需要类似 GUI 的报告 - 聚合图:
我怎样才能做到这一点?
编辑: 运行 使用此代码进入空指针异常:
public static void main(String[] args) throws Exception {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("bla/jmeter.properties");
JMeterUtils.setJMeterHome("bla/apache-jmeter-5.4.1");
JMeterUtils.initLocale();
File reportOutputDir = new File("report-output");
if (reportOutputDir.exists()) {
FileUtils.forceDelete(reportOutputDir);
}
File results = new File("result.html");
if (results.exists()) {
FileUtils.forceDelete(results);
}
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.classname", "org.apache.jmeter.report.dashboard.HtmlTemplateExporter");
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.property.output_dir","report-output\dashboard");
SaveService.loadProperties();
HashTree testPlanTree = new ListedHashTree();
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("host");
httpSampler.setPort(443);
httpSampler.setPath("/api/v1/stock-count/created");
httpSampler.setMethod("POST");
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.addTestElement(httpSampler);
loopController.setFirst(true);
loopController.initialize();
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setNumThreads(10);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
threadGroup.initialize();
TestPlan testPlan = new TestPlan();
testPlan.addThreadGroup(threadGroup);
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
Summariser summer = new Summariser(summariserName);
ResultCollector logger = new ResultCollector(summer);
logger.setFilename("result.html");
testPlanTree.add(testPlan, logger);
jmeter.configure(testPlanTree);
jmeter.run();
ReportGenerator generator = new ReportGenerator("result.html", null);
generator.generate();
}
15:39:26.906 [main] INFO org.apache.jmeter.report.dashboard.JsonExporter - 为总体创建统计信息
15:39:26.906 [main] DEBUG org.apache.jmeter.report.dashboard.JsonExporter - 为结果创建统计信息 data:null
线程“main”中的异常 java.lang.NullPointerException
在 org.apache.jmeter.report.dashboard.JsonExporter.createStatistic(JsonExporter.java:121)
在 org.apache.jmeter.report.dashboard.JsonExporter.export(JsonExporter.java:72)
在 org.apache.jmeter.report.dashboard.ReportGenerator.exportData(ReportGenerator.java:379)
在 org.apache.jmeter.report.dashboard.ReportGenerator.generate(ReportGenerator.java:257)
在 com.nordstrom.inventory.test.api.passport.JMeterTest.main(JMeterTest.java:87)
不是“html”,是JMeter的.jtl results file in CSV格式。
如果您想查看“聚合图”- 使用 Aggregate Graph 侦听器的“浏览”按钮打开您的 result.html
文件,它将加载它并呈现图表
您可能还想考虑使用 JMeter Plugins Command Line Tool which allows generation of various tables/charts from command line (can be also done programatically if you have the .jars in your project CLASSPATH)
您可能想要生成 JMeter 的 HTML Reporting Dashboard,您就快完成了,您只需要在测试执行之前在脚本的某处添加几行:
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.classname", "org.apache.jmeter.report.dashboard.HtmlTemplateExporter");
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.property.output_dir","report-output/dashboard");
然后转到 report-output\dashboard
文件夹并使用您喜欢的浏览器打开 index.html
。
我 运行 来自 Java 代码的 jmx 文件,并希望获得 console/file 报告。
public static void main(String[] args) throws Exception {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("path/jmeter.properties");
JMeterUtils.setJMeterHome("path/jmeter");
JMeterUtils.initLocale();
SaveService.loadProperties();
File in = new File("test.jmx");
HashTree testPlanTree = SaveService.loadTree(in);
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = "result.html";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
jmeter.configure(testPlanTree);
jmeter.run();
ReportGenerator generator = new ReportGenerator(logFile, null);
generator.generate();
}
运行 这段代码我生成了一个 html 文件:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1632316570010,1745,Created,500,,Requests 1-1,text,false,,417,1228,1,1,https://my.url,1740,0,1371
但是例如我需要类似 GUI 的报告 - 聚合图:
我怎样才能做到这一点?
编辑: 运行 使用此代码进入空指针异常:
public static void main(String[] args) throws Exception {
StandardJMeterEngine jmeter = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("bla/jmeter.properties");
JMeterUtils.setJMeterHome("bla/apache-jmeter-5.4.1");
JMeterUtils.initLocale();
File reportOutputDir = new File("report-output");
if (reportOutputDir.exists()) {
FileUtils.forceDelete(reportOutputDir);
}
File results = new File("result.html");
if (results.exists()) {
FileUtils.forceDelete(results);
}
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.classname", "org.apache.jmeter.report.dashboard.HtmlTemplateExporter");
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.property.output_dir","report-output\dashboard");
SaveService.loadProperties();
HashTree testPlanTree = new ListedHashTree();
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("host");
httpSampler.setPort(443);
httpSampler.setPath("/api/v1/stock-count/created");
httpSampler.setMethod("POST");
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.addTestElement(httpSampler);
loopController.setFirst(true);
loopController.initialize();
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setNumThreads(10);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
threadGroup.initialize();
TestPlan testPlan = new TestPlan();
testPlan.addThreadGroup(threadGroup);
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
Summariser summer = new Summariser(summariserName);
ResultCollector logger = new ResultCollector(summer);
logger.setFilename("result.html");
testPlanTree.add(testPlan, logger);
jmeter.configure(testPlanTree);
jmeter.run();
ReportGenerator generator = new ReportGenerator("result.html", null);
generator.generate();
}
15:39:26.906 [main] INFO org.apache.jmeter.report.dashboard.JsonExporter - 为总体创建统计信息 15:39:26.906 [main] DEBUG org.apache.jmeter.report.dashboard.JsonExporter - 为结果创建统计信息 data:null 线程“main”中的异常 java.lang.NullPointerException 在 org.apache.jmeter.report.dashboard.JsonExporter.createStatistic(JsonExporter.java:121) 在 org.apache.jmeter.report.dashboard.JsonExporter.export(JsonExporter.java:72) 在 org.apache.jmeter.report.dashboard.ReportGenerator.exportData(ReportGenerator.java:379) 在 org.apache.jmeter.report.dashboard.ReportGenerator.generate(ReportGenerator.java:257) 在 com.nordstrom.inventory.test.api.passport.JMeterTest.main(JMeterTest.java:87)
不是“html”,是JMeter的.jtl results file in CSV格式。
如果您想查看“聚合图”- 使用 Aggregate Graph 侦听器的“浏览”按钮打开您的
result.html
文件,它将加载它并呈现图表您可能还想考虑使用 JMeter Plugins Command Line Tool which allows generation of various tables/charts from command line (can be also done programatically if you have the .jars in your project CLASSPATH)
您可能想要生成 JMeter 的 HTML Reporting Dashboard,您就快完成了,您只需要在测试执行之前在脚本的某处添加几行:
JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.classname", "org.apache.jmeter.report.dashboard.HtmlTemplateExporter"); JMeterUtils.setProperty("jmeter.reportgenerator.exporter.html.property.output_dir","report-output/dashboard");
然后转到
report-output\dashboard
文件夹并使用您喜欢的浏览器打开index.html
。