Jmeter 没有运行 HttpSamplerProxy

1 java jmeter

我在 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)

Dmi*_*i T 5

首先,这段代码:

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 选项,如Taurusjmeter-java-dsl

但是,如果由于某种原因您想继续,您可以在不使用 JMeter GUI 的情况下启动 JMeter 测试的五种方法jmeter-from-code 存储库中获得一些示例