首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在代码中读取JMeter测试计划中的变量?

问如何在代码中读取JMeter测试计划中的变量?
EN

Stack Overflow用户
提问于 2015-11-24 05:01:02
回答 2查看 1.1K关注 0票数 1

在我的java代码中,如何访问存储在JMeter测试计划(jmx文件)中的值?特别是尝试获取ThreadGroup.num_threads,这样我的测试代码就可以知道在测试中使用了多少线程。

谢谢你的回复。下面是我最终使用的代码:

代码语言:javascript
复制
    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;
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2015-11-25 01:17:11

  1. Java方式(如果您打算使用Java API and XPath从.jmx文件中获取值)

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = builderFactory.newDocumentBuilder();Document xmlDocument =builder.parse(新建文件(“/DocumentBuilderFactory/to/test.jmx”));XPath表达式= XPathFactory.newInstance().newXPath();String expression =test.jmx NodeList = (NodeList) test.jmx XPathConstants.NODESET);for (int i= 0;i< matches.getLength();){System.out.println(“线程组”+ (i + 1) +“users =”+ matches.item(i).getTextContent());i++;}

JMeterUtils.loadJMeterProperties("/path/to/jmeter.properties");JMeterUtils.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根= (JMeterTreeNode) treeModel.getRoot();treeModel.addSubTree(testPlanTree,根);SearchByClass = new ();testPlanTree.traverse(threadGroups);集合threadGroupsRes = threadGroups.getSearchResults();对于(ThreadGroup threadGroup : threadGroupsRes) { }

票数 4
EN

Stack Overflow用户

发布于 2015-11-24 07:39:57

在扩展AbstractJavaSamplerClient的自定义java采样器中,您可以访问JavaSamplerContext对象,该对象公开了一组运行时属性

代码语言:javascript
复制
@Override
public SampleResult runTest(JavaSamplerContext context) {
    ...
    // get parameters:
    String urlString = context.getParameter( "paramName" );
    ...
}

您可以在运行时从JMeterContextService获取线程信息。当前活动线程数为

代码语言:javascript
复制
JMeterContextService.getNumberOfThreads()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33880607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档