有时在测试过程中需要将测试过程中生成的参数保存下来,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 + " "; 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 + " "; 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);