我在 5.3 版中使用 jmeter core 和 jmeter http 运行它。我很困惑为什么采样器不会触发。我不熟悉以这种方式使用 jmeter,并且不太确定这一切是如何工作的。当代码运行时,我最终在 jtl 文件中没有请求数据。
//JMeter initialization (properties, log levels, locale, etc)
JMeterUtils.loadJMeterProperties(System.getenv("JMETER_HOME") + "/bin/jmeter.properties");
JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// JMeter Test Plan, basic all u JOrphan HashTree
HashTree testPlanTree = new HashTree();
// HTTP Sampler
HTTPSampler httpSampler = new HTTPSampler();
httpSampler.setDomain("example.com");
httpSampler.setPort(80);
httpSampler.setPath("/");
httpSampler.setMethod("GET");
// Loop Controller
LoopController loopController = new LoopController();
loopController.setLoops(1);
loopController.addTestElement(httpSampler);
loopController.setFirst(true);
loopController.initialize();
// Thread Group
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
// Test Plan
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
// Construct Test Plan from previously initialized elements
testPlanTree.add("testPlan", testPlan);
testPlanTree.add("loopController", loopController);
testPlanTree.add("threadGroup", threadGroup);
testPlanTree.add("httpSampler", httpSampler);
// Run Test Plan
jmeter.configure(testPlanTree);
jmeter.run();
Run Code Online (Sandbox Code Playgroud)
首先,这段代码:
testPlanTree.add("testPlan", testPlan);
testPlanTree.add("loopController", loopController);
testPlanTree.add("threadGroup", threadGroup);
testPlanTree.add("httpSampler", httpSampler);
Run Code Online (Sandbox Code Playgroud)
需要替换为
testPlanTree.add(testPlan);
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
threadGroupHashTree.add(httpSampler);
Run Code Online (Sandbox Code Playgroud)
我也没有看到您将结果保存到 .jtl 的位置,您需要像这样添加ResultCollector:
Summariser summer = null;
String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");
if (summariserName.length() > 0) {
summer = new Summariser(summariserName);
}
String logFile = "/path/to/result.jtl";
ResultCollector logger = new ResultCollector(summer);
logger.setFilename(logFile);
testPlanTree.add(testPlanTree.getArray()[0], logger);
Run Code Online (Sandbox Code Playgroud)
jmeter.configure(testPlanTree);线前
一般来说,使用 API 创建 JMeter 测试不是很受支持,并且不能保证代码在下一个 JMeter 版本后可以正常工作,所以我宁愿依赖 3rd-party 选项,如Taurus或jmeter-java-dsl
但是,如果由于某种原因您想继续,您可以在不使用 JMeter GUI 的情况下启动 JMeter 测试的五种方法和jmeter-from-code 存储库中获得一些示例
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |