Java 如何在代码中从JMeter测试计划中读取变量?
在java代码中,如何访问存储在JMeter测试计划(jmx文件)中的值?特别是尝试获取ThreadGroup.num_线程,以便我的测试代码可以知道测试中使用了多少线程 谢谢你的回复。以下是我最终使用的代码:Java 如何在代码中从JMeter测试计划中读取变量?,java,jmeter,Java,Jmeter,在java代码中,如何访问存储在JMeter测试计划(jmx文件)中的值?特别是尝试获取ThreadGroup.num_线程,以便我的测试代码可以知道测试中使用了多少线程 谢谢你的回复。以下是我最终使用的代码: int testThreadCount = 0; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.ne
int testThreadCount = 0;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document testPlanFile = builder.parse(new File("path/to/testplan.jmx"));
NodeList nodes = testPlanFile.getElementsByTagName("stringProp");
for (int i = 0; i < nodes.getLength(); ++i)
{
Node node = nodes.item(i);
Element element = (Element)node;
String propName = element.getAttribute("name");
if (propName.equals("ThreadGroup.num_threads"))
{
testThreadCount = Integer.parseInt(element.getChildNodes().item(0).getNodeValue());
break;
}
}
int testThreadCount=0;
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
DocumentBuilder=factory.newDocumentBuilder();
文档testPlanFile=builder.parse(新文件(“path/to/testplan.jmx”);
NodeList节点=testPlanFile.getElementsByTagName(“stringProp”);
对于(int i=0;i
在扩展AbstractJavaSamplerClient
的自定义java采样器中,您可以访问JavaSamplerContext
对象,该对象公开了一系列运行时属性
@Override
public SampleResult runTest(JavaSamplerContext context) {
...
// get parameters:
String urlString = context.getParameter( "paramName" );
...
}
您可以在运行时从获取线程信息。当前活动线程数为
JMeterContextService.getNumberOfThreads()
在扩展
AbstractJavaSamplerClient
的自定义java采样器中,您可以访问JavaSamplerContext
对象,该对象公开了一系列运行时属性
@Override
public SampleResult runTest(JavaSamplerContext context) {
...
// get parameters:
String urlString = context.getParameter( "paramName" );
...
}
您可以在运行时从获取线程信息。当前活动线程数为
JMeterContextService.getNumberOfThreads()
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=builderFactory.newDocumentBuilder();
documentxmldocument=builder.parse(新文件(“/path/to/test.jmx”);
XPath=XPathFactory.newInstance().newXPath();
字符串表达式=“//hashTree/ThreadGroup/stringProp[@name='ThreadGroup.num_threads']]/text();
NodeList matches=(NodeList)xPath.compile(expression.evaluate(xmlDocument,XPathConstants.NODESET);
对于(int i=0;i
JMeterUtils.loadJMeterProperties(“/path/to/jmeter.properties”);
setJMeterHome(“/path/to/jmeter”);
JMeterUtils.initLogging();
JMeterUtils.initLocale();
SaveService.loadProperties();
StandardJMeterEngine jmeter=新的StandardJMeterEngine();
HashTree-testPlanTree=SaveService.loadTree(新文件(“/path/to/test.jmx”);
JMeterTreeModel treeModel=新JMeterTreeModel(新对象());
JMeterTreeNode root=(JMeterTreeNode)treeModel.getRoot();
添加子树(testPlanTree,root);
SearchByClass threadGroups=新的SearchByClass(ThreadGroup.class);
testPlanTree.traverse(线程组);
集合threadGroupsRes=threadGroups.getSearchResults();
对于(ThreadGroup ThreadGroup:threadGroupsRes){
System.out.println(threadGroup.getProperty(“threadGroup.num_threads”);
}
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=builderFactory.newDocumentBuilder();
documentxmldocument=builder.parse(新文件(“/path/to/test.jmx”);
XPath=XPathFactory.newInstance().newXPath();
字符串表达式=“//hashTree/ThreadGroup/stringProp[@name='ThreadGroup.num_threads']]/text();
NodeList matches=(NodeList)xPath.compile(expression.evaluate(xmlDocument,XPathConstants.NODESET);
对于(int i=0;i
JMeterUtils.loadJMeterProperties(“/path/to/jmeter.properties”);
setJMeterHome(“/path/to/jmeter”);
JMeterUtils.initLogging();
JMeterUtils.initLocale();
SaveService.loadProperties();
StandardJMeterEngine jmeter=新的StandardJMeterEngine();
HashTree-testPlanTree=SaveService.loadTree(新文件(“/path/to/test.jmx”);
JMeterTreeModel treeModel=新JMeterTreeModel(新对象());
JMeterTreeNode root=(JMeterTreeNode)treeModel.getRoot();
添加子树(testPlanTree,root);
SearchByClass threadGroups=新的SearchByClass(ThreadGroup.class);
testPlanTree.traverse(线程组);
集合threadGroupsRes=threadGroups.getSearchResults();
对于(ThreadGroup ThreadGroup:threadGroupsRes){
System.out.println(threadGroup.getProperty(“threadGroup.num_threads”);
}
你的意思是在自定义java采样器中吗?你的意思是在自定义java采样器中吗?当我尝试使用
JMeterContextService.getNumberOfThreads()
和JMeterContextService.getTotalThreads()
时,我第一次只看到0,第二次看到1或0,甚至当我将jmeter线程组配置为7个线程时。当我尝试JMeterContextService.getNumberOfThreads()
和JMeterContextService.getTotalThreads()
时,我只看到第一个线程为0,第二个线程为1或0,即使我将jmeter线程组配置为7个线程。