有時在測試過程中需要將測試過程中生成的參數保存下來,jmeter並沒有此類功能,此時,可以 通過beanshell編寫代碼來實現
思路: 每次請求響應返回后,通過正則表達式獲取到需要保存的值,通過Bean shell調用已經寫好的Java代碼,將值寫入指定的文件中
1、編寫java類AppendFile
package excel; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class AppendFile { // 將content寫入到指定文件fileName中 public static void appendFile(String fileName, String content) throws IOException { FileWriter writer = null; try { writer = new FileWriter(fileName, true); content = content + "\n"; writer.write(content); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } // fileName中的內容清空 public static void clearFile(String fileName) throws IOException { FileWriter writer = null; try { writer = new FileWriter(fileName); writer.write(""); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } }

package excel; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class AppendFile { // 將content寫入到指定文件fileName中 public static void appendFile(String fileName, String content) throws IOException { FileWriter writer = null; try { writer = new FileWriter(fileName, true); content = content + "\n"; writer.write(content); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } // fileName中的內容清空 public static void clearFile(String fileName) throws IOException { FileWriter writer = null; try { writer = new FileWriter(fileName); writer.write(""); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } }
2、將代碼打成jar包(Eclipse點擊Export打成jar包writeFile)放在jmeter的lib/ext目錄下
3、創建一個后置的BeanShell PostProcessor處理器,代碼如下:
import writeFile.*; System.out.println("******寫入文件*************"); String filePath = "d://token.txt"; String content = vars.get("token"); //此處的cash就是從sample中獲取的變量名,根據實際情況修改。 AppendFile.appendFile(filePath,content);