如何使用 JMeter Report Generator 生成 JSON 文件
How to generate a JSON file using JMeter Report Generator
我正在尝试使用 ReportGenerator 使用 JMeter 创建一个 statistics.json 文件,其中填充了我的 .jmx 测试结果。可以用 JMeter 做到这一点吗?
我已经完成了本教程:https://jmeter.apache.org/usermanual/generating-dashboard.html,它着重于使用报告生成器创建 html 仪表板,但我有一个项目要求 creating/updating statstics.json 文件也是如此。我已经使用 JSON Extractor post 处理器提取了必要的数据,我可以从该提取器中获取自定义变量以显示在我的调试响应和 CSV 文件中(添加一些 sample_variables 到 user.properties)。不幸的是,我未能找到有关如何使用这些响应创建 JSON 文件的更多信息。
在我的 reportgenerator.properties 文件中,我看到的与 json 相关的唯一部分是:
jmeter.reportgenerator.exporter.json.classname=org.apache.jmeter.report.dashboard.JsonExporter
jmeter.reportgenerator.exporter.json.property.output_dir=report-output
我正在寻找一些允许我编辑进入 JSON 文件的内容的设置,但我在文档中查找信息时遇到问题。我是否需要在另一个设置文件中发送或设置我的自定义变量?任何澄清这一点的帮助将不胜感激!
查看 JMeter source code you cannot efficiently control what's being exported into statistics.json file externally, you will have to either amend the JsonExporter class code or come up with your own implementation of the AbstractDataExporter 并选择存储内容、位置和方式。
private void createStatistic(Map<String, SamplingStatistic> statistics, MapResultData resultData) {
LOGGER.debug("Creating statistics for result data:{}", resultData);
SamplingStatistic statistic = new SamplingStatistic();
ListResultData listResultData = (ListResultData) resultData.getResult("data");
statistic.setTransaction((String) ((ValueResultData)listResultData.get(0)).getValue());
statistic.setSampleCount((Long) ((ValueResultData)listResultData.get(1)).getValue());
statistic.setErrorCount((Long) ((ValueResultData)listResultData.get(2)).getValue());
statistic.setErrorPct(((Double) ((ValueResultData)listResultData.get(3)).getValue()).floatValue());
statistic.setMeanResTime((Double) ((ValueResultData)listResultData.get(4)).getValue());
statistic.setMinResTime((Long) ((ValueResultData)listResultData.get(5)).getValue());
statistic.setMaxResTime((Long) ((ValueResultData)listResultData.get(6)).getValue());
statistic.setMedianResTime((Double) ((ValueResultData)listResultData.get(7)).getValue());
statistic.setPct1ResTime((Double) ((ValueResultData)listResultData.get(8)).getValue());
statistic.setPct2ResTime((Double) ((ValueResultData)listResultData.get(9)).getValue());
statistic.setPct3ResTime((Double) ((ValueResultData)listResultData.get(10)).getValue());
statistic.setThroughput((Double) ((ValueResultData)listResultData.get(11)).getValue());
statistic.setReceivedKBytesPerSec((Double) ((ValueResultData)listResultData.get(12)).getValue());
statistic.setSentKBytesPerSec((Double) ((ValueResultData)listResultData.get(13)).getValue());
statistics.put(statistic.getTransaction(), statistic);
}
一个更简单的选择是使用 Flexible File Writer
将示例变量写入单独的文件
我将保留已接受的答案,因为它是正确的。但是,我想补充一点,我能够通过使用 JSR223 post 处理器编写一个 groovy 脚本来完成我的要求,该脚本可以在我需要的任何地方创建一个 csv 文件,并用任何数据填充它我需要的。
我正在尝试使用 ReportGenerator 使用 JMeter 创建一个 statistics.json 文件,其中填充了我的 .jmx 测试结果。可以用 JMeter 做到这一点吗?
我已经完成了本教程:https://jmeter.apache.org/usermanual/generating-dashboard.html,它着重于使用报告生成器创建 html 仪表板,但我有一个项目要求 creating/updating statstics.json 文件也是如此。我已经使用 JSON Extractor post 处理器提取了必要的数据,我可以从该提取器中获取自定义变量以显示在我的调试响应和 CSV 文件中(添加一些 sample_variables 到 user.properties)。不幸的是,我未能找到有关如何使用这些响应创建 JSON 文件的更多信息。
在我的 reportgenerator.properties 文件中,我看到的与 json 相关的唯一部分是:
jmeter.reportgenerator.exporter.json.classname=org.apache.jmeter.report.dashboard.JsonExporter
jmeter.reportgenerator.exporter.json.property.output_dir=report-output
我正在寻找一些允许我编辑进入 JSON 文件的内容的设置,但我在文档中查找信息时遇到问题。我是否需要在另一个设置文件中发送或设置我的自定义变量?任何澄清这一点的帮助将不胜感激!
查看 JMeter source code you cannot efficiently control what's being exported into statistics.json file externally, you will have to either amend the JsonExporter class code or come up with your own implementation of the AbstractDataExporter 并选择存储内容、位置和方式。
private void createStatistic(Map<String, SamplingStatistic> statistics, MapResultData resultData) {
LOGGER.debug("Creating statistics for result data:{}", resultData);
SamplingStatistic statistic = new SamplingStatistic();
ListResultData listResultData = (ListResultData) resultData.getResult("data");
statistic.setTransaction((String) ((ValueResultData)listResultData.get(0)).getValue());
statistic.setSampleCount((Long) ((ValueResultData)listResultData.get(1)).getValue());
statistic.setErrorCount((Long) ((ValueResultData)listResultData.get(2)).getValue());
statistic.setErrorPct(((Double) ((ValueResultData)listResultData.get(3)).getValue()).floatValue());
statistic.setMeanResTime((Double) ((ValueResultData)listResultData.get(4)).getValue());
statistic.setMinResTime((Long) ((ValueResultData)listResultData.get(5)).getValue());
statistic.setMaxResTime((Long) ((ValueResultData)listResultData.get(6)).getValue());
statistic.setMedianResTime((Double) ((ValueResultData)listResultData.get(7)).getValue());
statistic.setPct1ResTime((Double) ((ValueResultData)listResultData.get(8)).getValue());
statistic.setPct2ResTime((Double) ((ValueResultData)listResultData.get(9)).getValue());
statistic.setPct3ResTime((Double) ((ValueResultData)listResultData.get(10)).getValue());
statistic.setThroughput((Double) ((ValueResultData)listResultData.get(11)).getValue());
statistic.setReceivedKBytesPerSec((Double) ((ValueResultData)listResultData.get(12)).getValue());
statistic.setSentKBytesPerSec((Double) ((ValueResultData)listResultData.get(13)).getValue());
statistics.put(statistic.getTransaction(), statistic);
}
一个更简单的选择是使用 Flexible File Writer
将示例变量写入单独的文件我将保留已接受的答案,因为它是正确的。但是,我想补充一点,我能够通过使用 JSR223 post 处理器编写一个 groovy 脚本来完成我的要求,该脚本可以在我需要的任何地方创建一个 csv 文件,并用任何数据填充它我需要的。