如何通过使用程序(Java代码)运行Jmeter测试来在Java代码中设置CSV文件?

问题描述 投票:1回答:1

我以前问过一个问题,即使用Java程序运行jmeter测试后如何记录结果,然后我自己获得了这个信息,因此,我将与答案共享该问题的链接,以供将来参考。所以这里是链接... How can I save a result set after running the Jmeter Test using a program (JAVA CODE)?

但是现在我对此还有另一个问题,如何设置CSV文件在这里有多次登录,我尝试了一些代码,但是没有发生了我想要的。有人可以帮助我吗?和请参阅以下我尝试过的代码。

package com.solitera.automation.controller;

import org.apache.jmeter.engine.StandardJMeterEngine;  
import org.apache.jmeter.reporters.ResultCollector;  
import org.apache.jmeter.reporters.Summariser;  
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.testbeans.gui.TestBeanGUI;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;  
import org.apache.jorphan.collections.HashTree;  

import java.io.File;  
import java.io.FileInputStream;  

public class JMeterFromExistingJMX {  

  public static void main(String[] argv) throws Exception {  

    //Set jmeter home for the jmeter utils to load  
    String jmeterHomelocation = "D:/apache-jmeter-5.1.1";  
    String jmeterPropertieslocation = jmeterHomelocation + "/bin/jmeter.properties";  

    // JMeter Engine  
    StandardJMeterEngine jmeter = new StandardJMeterEngine();  


    // Initialize Properties, logging, locale, etc.  
    JMeterUtils.loadJMeterProperties(new File(jmeterPropertieslocation).getPath());  
    JMeterUtils.setJMeterHome(new File(jmeterHomelocation).getPath());  
    // you can comment this line out to see extra log messages of i.e. DEBUG level  
    JMeterUtils.initLogging();  
    JMeterUtils.initLocale();  

    // Initialize JMeter SaveService  
    SaveService.loadProperties();  

    HashTree testPlanTree = SaveService.loadTree(new File("D:/apache-jmeter-5.1.1/extras/slt_auto_test_java_blaze_script.jmx"));

    Summariser summer = null;  
    String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");  

    if (summariserName.length() > 0) {  
      summer = new Summariser(summariserName);  
    }  


    CSVDataSet csvDataSet = new CSVDataSet();
    csvDataSet.setName("CSV Data Set Config");
    csvDataSet.setProperty("delimiter",",password,submitLogin,userName");
    csvDataSet.setProperty("filename", "D:/apache-jmeter-5.1.1/extras/CSVData.csv");
    csvDataSet.setProperty("ignoreFirstLine", false);
    csvDataSet.setProperty("quotedData", false);
    csvDataSet.setProperty("recycle", true);
    csvDataSet.setProperty("shareMode", "shareMode.all");
    csvDataSet.setProperty("stopThread", false);
    csvDataSet.setProperty("variableNames", "foo");
    csvDataSet.setProperty(TestElement.TEST_CLASS, csvDataSet.getClass().getName());
    csvDataSet.setProperty(TestElement.GUI_CLASS, TestBeanGUI.class.getName());

    String logFile = "D:/apache-jmeter-5.1.1/extras/resultss.xml";
    ResultCollector logger = new ResultCollector(summer);  
    logger.setFilename(logFile);
    testPlanTree.add(testPlanTree.getArray()[0], logger);  

    // Run JMeter Test  
    jmeter.configure(testPlanTree);  
    jmeter.run();  
  }  
}

以下是我使用Blazemeter录制脚本并将其添加到Jmeter GUI的图像,请参考相同的内容以了解我的TestPlan实际外观的更多信息。

enter image description here

enter image description here

enter image description here

CSVData.csv文件:

enter image description here

NOTE:我试图通过上面共享的Java代码运行整个脚本,如果我仅使用一个用户登录名就没有CSV文件运行,并且将线程数设置为3,则该脚本将运行很好。

java jmeter jmeter-plugins jmeter-5.0 jmeter-maven-plugin
1个回答
0
投票
只需从CSV数据集配置的“变量名称”部分中删除所有内容:

enter image description here

并且您的设置应按预期开始工作。假设您将“忽略第一行”设置为False,并且CSV文件的第一行是标头,而不是您不需要在此处设置任何变量名的数据,JMeter会自动执行。

您在代码中也不需要此CSVDataSet声明/配置,因为:

    未正确配置
  1. 它没有添加任何值,因为您没有将其添加到Test Plan
  • 更多信息:Using CSV DATA SET CONFIG
  • 最新问题
    © www.soinside.com 2019 - 2024. All rights reserved.