jmeter编写脚本创建100个现场组每个线程组里面有1个http请求
使用groovy脚本

下面脚本输入位置为:jMeter/bin 运行目录
import org.apache.jmeter.control.LoopController import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy import org.apache.jmeter.testelement.TestPlan import org.apache.jmeter.threads.ThreadGroup import org.apache.jorphan.collections.HashTree import org.apache.jmeter.save.SaveService import org.apache.jmeter.testelement.TestElement import java.io.FileOutputStream try { log.info("开始创建符合规范的JMX文件...") // 初始化SaveService SaveService.loadProperties() // 创建测试计划 - 使用JMeter的标准方式 def testPlan = new TestPlan("标准测试计划") testPlan.setEnabled(true) testPlan.setProperty(TestElement.GUI_CLASS, "TestPlanGui") testPlan.setProperty(TestElement.TEST_CLASS, "TestPlan") def testPlanTree = new HashTree() testPlanTree.add(testPlan) def threadGroupsTree = new HashTree() // 创建3个线程组,如果需要100个,把3改成100即可 (1..3).each { i -> // 创建循环控制器 def loopController = new LoopController() loopController.setEnabled(true) loopController.setName("Loop Controller") loopController.setLoops(1) loopController.setContinueForever(false) loopController.setProperty(TestElement.GUI_CLASS, "LoopControlPanel") loopController.setProperty(TestElement.TEST_CLASS, "LoopController") // 创建线程组 def threadGroup = new ThreadGroup() threadGroup.setEnabled(true) threadGroup.setName("线程组-${i}") threadGroup.setNumThreads(1) threadGroup.setRampUp(1) threadGroup.setScheduler(false) threadGroup.setProperty(TestElement.GUI_CLASS, "ThreadGroupGui") threadGroup.setProperty(TestElement.TEST_CLASS, "ThreadGroup") threadGroup.setProperty("ThreadGroup.on_sample_error", "continue") threadGroup.setSamplerController(loopController) // 创建HTTP请求 def httpSampler = new HTTPSamplerProxy() httpSampler.setEnabled(true) httpSampler.setName("HTTP请求-${i}") httpSampler.setDomain("example.com") httpSampler.setPort(443) httpSampler.setProtocol("https") httpSampler.setPath("/api/test/${i}") httpSampler.setMethod("POST") httpSampler.setFollowRedirects(true) httpSampler.setUseKeepAlive(true) httpSampler.setProperty(TestElement.GUI_CLASS, "HttpTestSampleGui") httpSampler.setProperty(TestElement.TEST_CLASS, "HTTPSamplerProxy") // 构建正确的树结构 def loopTree = new HashTree() loopTree.add(httpSampler) def tgTree = new HashTree() tgTree.add(loopController, loopTree) threadGroupsTree.add(threadGroup, tgTree) log.info("创建线程组-${i}") } testPlanTree.add(threadGroupsTree) // 保存文件 def outputFile = new File("standard_test_plan.jmx") FileOutputStream fos = new FileOutputStream(outputFile) SaveService.saveTree(testPlanTree, fos) fos.close() def result = "✅ 标准JMX文件创建成功: ${outputFile.absolutePath}" log.info(result) SampleResult.responseData = result SampleResult.successful = true } catch (Exception e) { def error = "❌ 创建失败: ${e.message}" log.error(error, e) SampleResult.responseData = error SampleResult.successful = false }
浙公网安备 33010602011771号