我以前问过一个问题,即使用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文件:
NOTE:我试图通过上面共享的Java代码运行整个脚本,如果我仅使用一个用户登录名就没有CSV文件运行,并且将线程数设置为3,则该脚本将运行很好。
并且您的设置应按预期开始工作。假设您将“忽略第一行”设置为False
,并且CSV文件的第一行是标头,而不是您不需要在此处设置任何变量名的数据,JMeter会自动执行。
您在代码中也不需要此CSVDataSet声明/配置,因为: