在JMeter GUI中,我们通过向HTTP请求添加“查看结果树”,然后检查其响应数据字段来获取HTTP调用的HTML结果。
如何使用API完成此操作?
假设我有“经典”设置:
StandardJMeterEngine jm = new StandardJMeterEngine();
JMeterUtils.loadJMeterProperties("jmeter.properties");
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setProtocol( protocol );
httpSampler.setDomain( domain );
httpSampler.setPath( path );
LoopController loopCtrl = new LoopController();
loopCtrl.setLoops(1);
loopCtrl.addTestElement(httpSampler);
loopCtrl.setFirst(true);
SetupThreadGroup threadGroup = new SetupThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopCtrl);
TestPlan testPlan = new TestPlan("HTTP test plan");
HashTree testTree = new HashTree();
testTree.add("testPlan", testPlan);
testTree.add("loopCtrl", loopCtrl);
testTree.add("threadGroup", threadGroup);
testTree.add("httpSampler", httpSampler);
jm.configure(testTree);
jm.run();
我试图通过使用HTTPSampleResult实现这一点,但我还没能注入它。这是正确的做法吗?
答案 0 :(得分:1)
首先添加相应的逻辑,将测试执行结果保存到.jtl文件
//add Summarizer output to get test progress in stdout like:
// summary = 2 in 1.3s = 1.5/s Avg: 631 Min: 290 Max: 973 Err: 0 (0.00%)
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
// Store execution results into a .jtl file
String logFile = jmeterHome + System.getProperty("line.separator") + "example.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(hashTree.getArray()[0], logger);
第二步:配置JMeter以保存所有响应数据。可以通过 user.properties 文件来完成,该文件位于JMeter安装的/ bin文件夹中。将下一行添加到文件中。
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
一旦测试运行完成,您应该能够打开" example.jtl"带有View Results Tree侦听器的文件,并检查请求和响应详细信息。
请参阅Apache JMeter Properties Customization Guide以了解有关不同JMeter属性以及设置和覆盖它们的方法的更多信息。
请记住,将完整的请求和响应详细信息存储到.jtl文件中以及使用xml格式会导致CPU和RAM消耗的开销,因此请确保仅将其用于调试目的,这样一旦您对此感到满意您的测试脚本还原user.properties文件中的更改。
另外,您可以参考https://bitbucket.org/blazemeter/jmeter-from-code/查看如何以编程方式创建符合JMeter的脚本(因此您应该能够通过JMeter GUI打开生成的.jmx文件)。