2016-05-05 88 views
0

我正在将我的变量写入CSV文件,但我面临以下两个问题 - 1.即使脚本结束,CSV文件也会显示它正在使用并且只读模式 2.我想要制表符分隔值,但\ t在以下不起作用Jmeter写入文件-Beanshell脚本问题

FileWriter fstream = new FileWriter("C:\\path to csv\\test.csv",true); 
BufferedWriter out = new BufferedWriter(fstream); 
out.write(vars.get("num1")); 
out.write(System.getProperty("\t")); 
out.write(vars.get("num2")); 

out.write(System.getProperty("line.separator")); 
out.close(); 
fstream.close(); 

我该如何解决它们?

回答

0

替换此行:

out.write(System.getProperty("\t")); 

out.write("\t"); 

这将导致该行因此“NUM2”变量没有被写入和流没有关闭你的脚本失败。

下次您遇到Beanshell脚本问题时,请查看jmeter.log文件是否有任何错误。如果你想要一个人类可读的堆栈跟踪 - 环绕你的代码中包含try/catch块:

try { 
    //your code here 
} 
catch (Throwable ex) { 
    log.error("Something wrong", ex); 
    throw ex; 
} 

有关使用和故障排除的BeanShell脚本How to Use BeanShell: JMeter's Favorite Built-in Component文章以获取更多信息。


顺便说一句,你可以写使用Sample Variables财产任何JMeter的可变进.jtl结果文件,以使它只是在下一行添加到user.properties文件(住在JMeter的“BIN”文件夹)

sample_variables=num1,num2 

并将值添加到.jtl文件中。

+0

out.write(“\ t”);不工作。所以我尝试了下面的代码,但它没有写入任何csv文件 - import java.io.FileOutputStream; import java.io.BufferedWriter; import java.io.FileWriter; line_num1 = vars.get(“line_num”); log.info(“number is”+ line_num1); FileWriter fstream = new FileWriter(“C:\\ Users \\ 5CB4024KNM \\ Desktop \\ MOBI \\ mobi \\ r.csv”,true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get(“line_num”)); out.write(System.getProperty(“line.separator”)); out.close(); fstream.close(); – arm

0

或者,你可以尝试写一些类似this blog中提到的东西。也许它有帮助。

import org.apache.jmeter.services.FileServer; 

// Get the variable(s) from the JMeter script 
tempVar = vars.get("ExampleVar"); 

// Static elements or calculations 
part1 = "Car Speed is: "; 
part2 = " km/h"; 

// Open File(s) 
f = new FileOutputStream(FileServer.getFileServer().getBaseDir()+"\\carSpeed.csv", true); 
p = new PrintStream(f); 

// Write data to file 
p.println(part1 + tempVar + part2); 

// Close File(s) 
p.close();f.close();