【问题标题】:How to set CSV file in java code by running the Jmeter test using a program (Java Code)?如何通过使用程序(Java 代码)运行 Jmeter 测试在 Java 代码中设置 CSV 文件?
【发布时间】:2020-01-21 12:35:42
【问题描述】:

我之前曾问过如何在使用 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 的实际外观。

CSVData.csv 文件:

注意: 我试图通过上面共享的 Java 代码运行整个脚本,如果我在没有 CSV 文件的情况下运行,只有一个用户登录并设置线程数 = 3然后脚本运行良好。

【问题讨论】:

  • 你的 CSVData.csv 是什么样子的?
  • 您好,上面已经添加了CSVData.csv文件图片,请参考。

标签: java jmeter jmeter-plugins jmeter-5.0 jmeter-maven-plugin


【解决方案1】:

只需从 CSV 数据集配置的“变量名称”部分中删除所有内容:

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

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

  1. 配置不正确
  2. 它不会添加任何价值,因为您没有将其添加到 Test Plan

更多信息:Using CSV DATA SET CONFIG

【讨论】:

  • 非常感谢先生,现在我的 JMeter 测试在不同的登录名下运行良好,再次非常感谢。基本上我的要求是使用 java 代码测试 Jmeter 脚本,您能否指导我或给我一些建议或建议,为未来的观点实现这一目标的最佳实践是什么?并希望我们能再次在这里见面:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多