我有这样的简单代码 -
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语句查看日志文件中打印的数字。也没有错误。
答案 0 :(得分:3)
确保num1
变量不为空,以便检查它是否修改了打印出来的行:
log.info(num1);
您需要删除num1
周围的引号才能看到实际值
你需要逃避" abc"带双反斜杠的文件夹名称:
FileWriter fstream = new FileWriter("C:\\abc\\r.csv", true);
使用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);
您可以在Beanshell脚本的最开头添加debug();
指令,将很多Beanshell调试打印到STDOUT中。还可以考虑使用Debug Sampler和View 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存在的目录,并且您有权在那里写。