有时在测试过程中需要将测试过程中生成的参数保存下来,jmeter并没有此类功能,此时,可以 通过beanshell编写代码来实现
思路: 每次请求响应返回后,通过正则表达式获取到需要保存的值,通过Bean shell调用已经写好的Java代码,将值写入指定的文件中
1、编写java类AppendFile
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包放在jmeter的lib/ext目录下
javac AppendFile.java #编译生成AppendFile.class文件 jar cvf AppendFile.jar AppendFile.class #生成AppendFile.jar包
3、创建一个BeanShell PostProcessor处理器
import writeFile.*; System.out.println("******写入文件*************"); String filePath = "d://liu-ke-test.txt"; String content = vars.get("username"); //此处的username就是从sample中获取的变量名,根据实际情况修改。 AppendFile.appendFile(filePath,content);
顺便也解决了跨线程组传值的问题~~~