【问题标题】:Results are not stored with a column names in CSV file after running the Jmeter test through a program (Java Code)通过程序(Java 代码)运行 Jmeter 测试后,结果不会与 CSV 文件中的列名一起存储
【发布时间】:2020-01-22 07:10:42
【问题描述】:

我已经使用一个程序(即用 java 代码编写)成功运行了 Jmeter 测试。我也在此处分享该问题的解决方案的链接 => How to set CSV file in java code by running the Jmeter test using a program (Java Code)?

现在,我在 CSV 文件中得到了结果,但该文件中的问题是,它没有显示列名,它只是获取结果并将其存储到文件中。请参考下图了解更多信息。

谁能帮助我如何将结果连同其列名一起存储??

我的java代码是:

package com.automation;
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();  

   /* // Load existing .jmx Test Plan  
    FileInputStream in = new FileInputStream(new File(jmeterHomelocation + "extras/slt_autoMa_Test.jmx"));  
    HashTree testPlanTree = SaveService.loadTree(in);  
    in.close(); */ 

    HashTree testPlanTree = SaveService.loadTree(new File("D:/test-root/SLT/JmeterFiles/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);  
    }  

    String logFile = "D:/test-root/SLT/JmeterFiles/resultss.csv";
    ResultCollector logger = new ResultCollector(summer);  
    logger.setFilename(logFile);
    testPlanTree.add(testPlanTree.getArray()[0], logger);  

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

【问题讨论】:

    标签: java jmeter jmeter-plugins jmeter-5.0


    【解决方案1】:

    打开D:/apache-jmeter-5.1.1/bin/jmeter.properties 文件并查找jmeter.save.saveservice.print_field_names 行。

    为了在 .jtl 结果文件中有标题行,该属性需要设置为true,例如:

    jmeter.save.saveservice.print_field_names=true
    

    确保在属性声明之前没有# sing。

    参考资料:

    您需要删除 D:/test-root/SLT/JmeterFiles/resultss.csv 的前一个实例,就好像它不为空一样 - JMeter 不会添加标题,它只会将新结果附加到那里。

    【讨论】:

    • # 注释掉的值是默认值。 #jmeter.save.saveservice.print_field_names=true```他们在Jmeter.properties文件中说,#值是默认值,所以这个jmeter.save.saveservice.print_field_names=true也是默认的不是吗??我尝试删除 # 然后运行我的脚本,结果以与前一个相同的方式存储。那么这个文件有什么问题呢??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2012-02-25
    相关资源
    最近更新 更多