2016-05-05 125 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();