当前位置: 首页 > 知识库问答 >
问题:

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

夏俊杰
2023-03-14

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

感谢您的回复。以下是我最终使用的代码:

    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;
        }
    }

共有2个答案

欧阳正德
2023-03-14

在扩展< code > AbstractjavaSamplerClient 的自定义Java采样器中,您可以访问< code>JavaSamplerContext对象,该对象公开了一系列运行时属性

@Override
public SampleResult runTest(JavaSamplerContext context) {
    ...
    // get parameters:
    String urlString = context.getParameter( "paramName" );
    ...
}

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

JMeterContextService.getNumberOfThreads()
申炳
2023-03-14

>

  • Java方式(如果您要使用JavaAPI和XPath从.jmx文件中获取值)

    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    
    DocumentBuilder builder = builderFactory.newDocumentBuilder();
    
    Document xmlDocument = builder.parse(new File("/path/to/test.jmx"));
    
    XPath xPath = XPathFactory.newInstance().newXPath();
    String expression = "//hashTree/ThreadGroup/stringProp[@name='ThreadGroup.num_threads']/text()";
    NodeList matches = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
    
    for (int i = 0; i < matches.getLength(); ) {
        System.out.println("Thread Group " + (i + 1) + " users = " + matches.item(i).getTextContent());
        i++;
    }
    

    JMeter方式(如果你使用JMeter API来读取。jmx文件)

    JMeterUtils.loadJMeterProperties("/path/to/jmeter.properties");
    JMeterUtils.setJMeterHome("/path/to/jmeter");
    JMeterUtils.initLogging();
    JMeterUtils.initLocale();
    
    
    SaveService.loadProperties();
    
    
    StandardJMeterEngine jmeter = new StandardJMeterEngine();
    
    HashTree testPlanTree = SaveService.loadTree(new File("/path/to/test.jmx"));
    
    JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
    JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot();
    treeModel.addSubTree(testPlanTree, root);
    
    SearchByClass<ThreadGroup> threadGroups = new SearchByClass<>(ThreadGroup.class);
    testPlanTree.traverse(threadGroups);
    Collection<ThreadGroup> threadGroupsRes = threadGroups.getSearchResults();
    for (ThreadGroup threadGroup : threadGroupsRes) {
        System.out.println(threadGroup.getProperty("ThreadGroup.num_threads"));
    }
    

  •  类似资料:
    • 主要内容:测试计划注意事项 -可以将测试计划可视化为用于运行测试的JMeter脚本。 测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。 测试计划包含执行脚本的所有步骤。 测试计划中包含的所有内容都按照从上到下的顺序执行,或者按照测试计划中定义的顺序执行。 下图给出了测试计划的目录级别。 测试计划注意事项 - 在运行整个测试计划之前,应保存测试计划。 JMeter文件或测试计划以扩

    • 在本节中,我们将学习如何编写一个简单的测试计划来测试Java Messaging Service(JMS)。 出于测试目的,我们使用Apache ActiveMQ。有各种JMS服务器,如:glassfish3,IBM WebSphere MQ(以前称为MQSeries),Tibco等。 在继续本节之前,请按照以下简单步骤在系统上安装Apache ActiveMQ。 从以下链接下载最新版本的Apac

    • 主要内容:创建JMeter测试计划,添加采样器,添加监听器,保存并执行测试计划,验证输出在本节中,我们将学习如何创建测试FTP站点的基本测试计划。 为了演示测试目的,我们将使用公共可用的FTP位置,可以使用它来测试文件的下载。 您可以使用市场上现有的任何可用的演示FTP位置。我们使用URL下的FTP位置: https://dlptest.com/ftp-test/ 下图显示了上述URL时打开的网页。 单击FTP测试部分下的URL: ftp://ftp.dlptest.com/ 。 它

    • 主要内容:创建JMeter测试计划,添加采样器,添加监听器,验证输出在本节中,将学习如何创建测试网页的基本测试计划。 出于演示测试目的,我们将测试URL - https://www.xnip.cn/ 的网页性能。 创建JMeter测试计划 进入到JMeter安装bin文件夹,双击文件以启动JMeter界面。 单击“Test Plan”节点。 将测试计划重命名为Demo Test。 选择节点并右键单击所选项目。 鼠标悬停在“Add”选项上,然后将显示元素列表。 选择

    • 主要内容:Web Services,API(应用程序编程接口),Web API,创建JMeter测试计划,添加采样器,添加监听器,保存并执行测试计划,验证输出在继续本节之前,让我们先了解一些有关Web Services API的关键概念。 Web Services Web服务被定义为旨在通过网络支持两台机器之间交互的软件系统。它被设计为具有以通常在Web服务描述语言(WSDL)中指定的机器可处理格式描述的接口。 通常,“HTTP”是最常用的通信协议。 Web服务还使用SOAP,REST和XML-

    • JMeter包含各种相互关联但为不同目的而设计的元素。在开始使用JMeter之前,最好先了解一下JMeter的一些主要元素,并详细说明。 注意:测试计划包含至少一个线程组。 以下是JMeter的一些主要组件: 测试计划(Test Plan) 线程组(Thread Group) 控制器(Controllers) 监听器(Listeners) 计时器(Timers) 配置元素(Configuratio