Jmeter Beanshell后处理器没有写任何东西到csv文件

时间:2016-05-06 18:35:37

标签: jmeter

我有这样的简单代码 -

import java.io.FileOutputStream;

import java.io.BufferedWriter;

import java.io.FileWriter;
num1 = vars.get("num");

log.info("num1");


 FileWriter fstream = new FileWriter("C:\abc\\r.csv", true);
 BufferedWriter out = new BufferedWriter(fstream);
 out.write(vars.get("num"));
 out.write(System.getProperty("line.separator"));
 out.close();
 fstream.close();

然而它没有工作,没有任何东西进入csv文件。我可以使用log语句查看日志文件中打印的数字。也没有错误。

2 个答案:

答案 0 :(得分:3)

  1. 确保num1变量不为空,以便检查它是否修改了打印出来的行:

    log.info(num1);
    

    您需要删除num1周围的引号才能看到实际值

  2. 你需要逃避" abc"带双反斜杠的文件夹名称:

    FileWriter fstream = new FileWriter("C:\\abc\\r.csv", true);
    
  3. 使用FileUtils类可能会更容易:

    import org.apache.commons.io.FileUtils;
    FileUtils.writeStringToFile(new File("C:\\abc\\r.csv), vars.get("num"), true);
    FileUtils.writeStringToFile(new File("C:\\abc\\r.csv"), System.getProperty("line.separator"), true);
    
  4. 您可以在Beanshell脚本的最开头添加debug();指令,将很多Beanshell调试打印到STDOUT中。还可以考虑使用Debug SamplerView Results Tree侦听器组合来检查JMeter变量和属性值。有关详细信息,请参阅How to debug your Apache JMeter script文章。

答案 1 :(得分:0)

试试这个:

import java.io.FileOutputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; //import IOException, you'll need it later
import java.io.File; // this too :)

int num1 = vars.get("num"); // you need to declare variable type, int in your case, othrewise it's an error
log.info(String.valueOf(num1)); //use String.valueOf() to convert int to String before logging

try {
    // you need to escape '\', or better use linux-style paths
    File myCsv = new File("C:/abc/r.csv");

    FileWriter fstream = new FileWriter(myCsv, true);
    BufferedWriter out = new BufferedWriter(fstream);
    out.write(num1);
    out.write(System.getProperty("line.separator"));
    out.close();
    fstream.close();
} catch (IOException exc) {
    // in case any error occurs, catch it and log
    log.error("Failed to write to file!\r\n" + exc.getMessage());
}

不确定,如果你需要添加所有这些导入,理论上jmeter应该自动获取它们,但我现在没有任何意义可以检查。
更新
确保r.csv存在的目录,并且您有权在那里写。