背景:
在日常的功能测试或者性能测试的时候,需要把结果中指定的数据保存到指定的文件,进行使用.
示例围绕 beanshell 来实现这个功能
下面从两个方面来实现:
保存接口返回指定的数据
从数据库用 SQL 语句取数据,保存结果到指定文件中
保存接口返回指定的数据
接口:登录
需求:提取 token 值
新建 HTTP 请求

请求返回的结果,这里直接用 JSON 显示:

新建 JSON 提取器

调试,看有没有获取到值
添加 debug sampler

运行,查看 debug sampler 响应数据里面 token 有没有取到值

添加 beanshell 取样器

代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| File file = new File("D:/xxx.txt"); if (!file.exists()) { file.createNewFile(); }
FileReader fileReader = new FileReader(file);
BufferedReader bufferR = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); FileWriter fileWriter = new FileWriter(file, true); BufferedWriter bufferW = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8")); String line = null;
boolean containsTitleFlag = false; while ((line = bufferR.readLine()) != null) { if (line.contains("xxx") && line.contains("xxx")) { containsTitleFlag = true; break; } } if (!containsTitleFlag) { bufferW.write("xxx" + "\t"); bufferW.write("xxx"); bufferW.write("\n"); } bufferW.write(vars.get("xxx")+"\t"); bufferW.write(vars.get("xxx")); bufferW.write("\n");
bufferW.close(); bufferR.close();
fileReader.close(); fileWriter.close();
|
运行
从数据库用 SQL 语句取数据,保存结果到指定文件中
jdbc request参考jmeter连接jdbc章节
beanshell代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| File file = new File("D:/xxx.txt"); if (!file.exists()) { file.createNewFile(); }
FileReader fileReader = new FileReader(file);
BufferedReader bufferR = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); FileWriter fileWriter = new FileWriter(file, true); BufferedWriter bufferW = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8")); String line = null;
boolean containsTitleFlag = false; while ((line = bufferR.readLine()) != null) { if (line.contains("xxx") && line.contains("xxx")) { containsTitleFlag = true; break; } } if (!containsTitleFlag) { bufferW.write("xxa" + "\t"); bufferW.write("xxb"); bufferW.write("\n"); }
String num_str = vars.get("xxa_#"); Integer num = Integer.parseInt(num_str); for (i = 1; i <= num; i++) { String xxa = vars.get("xxa_" + i); String xxb = vars.get("xxb_" + i); bufferW.write(xxa + "\t"); bufferW.write(xxb); bufferW.write("\n"); }
bufferW.close(); bufferR.close();
fileReader.close(); fileWriter.close();
|
运行