如何通过编程方式向JMeter传递-J参数
在Java代码中为JMeter的${__P()}参数传递值
要在通过Java代码运行JMeter测试时,给.jmx文件里的${__P(parameter_name)}参数赋值,你可以用以下两种方法,效果和控制台使用-Jparameter_name=value完全一致:
方法1:直接设置JVM系统属性
控制台的-J参数本质就是设置JVM系统属性,所以在代码里可以直接用System.setProperty()来实现,把参数值绑定到对应的属性名上:
final StandardJMeterEngine jmeter = new StandardJMeterEngine(); JMeterUtils.setJMeterHome(getAbsolutePath("/jmeter")); JMeterUtils.loadJMeterProperties(getAbsolutePath("/jmeter/bin/jmeter.properties")); // 添加参数设置,对应控制台的-Jparameter_name=your_value System.setProperty("parameter_name", "your_parameter_value"); JMeterUtils.initLocale(); try { SaveService.loadProperties(); final File jmeterConfig = new File(getAbsolutePath(pathToJmx)); final HashTree testPlanTree = SaveService.loadTree(jmeterConfig); jmeter.configure(testPlanTree); } catch (final IOException e) { throw new JMeterConfigurationException(e); } jmeter.run();
方法2:使用JMeterUtils的setProperty方法
JMeter提供了封装好的JMeterUtils.setProperty()方法,专门用于设置JMeter属性,__P()函数会优先读取这类属性,用法如下:
final StandardJMeterEngine jmeter = new StandardJMeterEngine(); JMeterUtils.setJMeterHome(getAbsolutePath("/jmeter")); JMeterUtils.loadJMeterProperties(getAbsolutePath("/jmeter/bin/jmeter.properties")); // 使用JMeter工具类设置参数 JMeterUtils.setProperty("parameter_name", "your_parameter_value"); JMeterUtils.initLocale(); try { SaveService.loadProperties(); final File jmeterConfig = new File(getAbsolutePath(pathToJmx)); final HashTree testPlanTree = SaveService.loadTree(jmeterConfig); jmeter.configure(testPlanTree); } catch (final IOException e) { throw new JMeterConfigurationException(e); } jmeter.run();
多参数传递
如果有多个${__P()}参数需要赋值,只需要多次调用对应的方法即可:
// 方法1示例:设置多个参数 System.setProperty("param1", "value1"); System.setProperty("param2", "value2"); // 方法2示例:设置多个参数 // JMeterUtils.setProperty("param1", "value1"); // JMeterUtils.setProperty("param2", "value2");
原理说明
${__P(parameter_name, defaultValue)}函数的优先级是:先读取JMeter自身的属性(通过JMeterUtils.setProperty()设置的),如果没有找到,再读取JVM系统属性(通过System.setProperty()或-J参数设置的),最后才会使用默认值。所以两种方法都能让你的参数值被正确读取。
内容的提问来源于stack exchange,提问作者Ilya Zinkovich
相关产品推荐
相关产品推荐

