如何使用API​​获取JMeter HTTPSampler调用的HTML结果?

时间:2015-05-18 16:21:08

标签: jmeter

在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实现这一点,但我还没能注入它。这是正确的做法吗?

1 个答案:

答案 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文件)。