Jmeter 如何将接口数据保存到CSV文件中
今天我们来介绍如何将通过Jmetet将我们请求的接口数据,将其导出到CSV文件中!相信这一篇文章可以给很多同学得到更多的知识!
Jmetet 设置请求接口
首先设置请求线程组,这里我们设置请求的线程组,Ramp-Up秒,循环次数 均设为1.
然后添加一个HTTP请求
此时这时候我们已经配置好了请求的相关信息。
Jmeter 设置提取接口返回
首先我们观察接口的返回值,然后通过json数据提取器,将我们需要提取的数据进行提取,首先观察返回体结构,然后提取数据。
1
| {"bizCode":10000,"data":{"icon":[{"icon":"https://test.matchplay.com/static//page/detail/soccer/football_match_started.png","id":"football_match_started"},{"icon":"https://test.matchplay.com/static//page/detail/soccer/football_match_ended.png","id":"football_match_ended"},{"icon":"https://test.matchplay.com/static//page/detail/soccer/football_video_assistant_referee_over.png","id":"football_video_assistant_referee_over"},]},"innerMsg":"success","message":"success"}
|
假如我们想要提取其中的icon字段,那么你就可以通过Json提取,添加一个Json提取器
那么我们的提取公式就是$.data.icon[*].icon
其中[*] 表示提取多个匹配,然后在Match No. 输入-1 表示匹配所有。
这里我们可以添加多个Json 提取器,然后写入具体的规则即可!
Benshell 处理写入csv脚本
首先添加一个后置处理器Benshell
然后添加一个调试后置处理器,这样我们就可以看到抓取的数据信息
编写Benshell 脚本
在Benshell 中写入脚本如下:
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 46 47 48
| import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; // 文件路径 String filePath = "C:\\Users\\15424\\Desktop\\比赛\\biz.csv"; // 打开文件以追加模式写入(如果文件不存在,它将被创建) FileWriter fstream = new FileWriter(filePath); BufferedWriter out = new BufferedWriter(fstream);
int invoiceCodeMatchNr = Integer.parseInt(vars.get("bizcode_matchNr")); int invoiceNumberMatchNr = Integer.parseInt(vars.get("id_matchNr")); // int billingDateMatchNr = Integer.parseInt(vars.get("bb_matchNr")); //int eInvoiceNumberMatchNr = Integer.parseInt(vars.get("eInvoiceNumber_matchNr")); try { // 使用 for 循环写入数据 for (int i = 1; i <= invoiceCodeMatchNr; i++) { // 构造要写入的数据,这里只是简单的示例,你可以根据需要修改 String line = vars.get("bizcode_"+i); String line2 = vars.get("id_"+i); log.info(line); // 写入数据到文件 out.write(line+","+line2); out.newLine(); }
out.write(","); } catch (IOException e) { // 处理可能的 IOException log.error("Error writing to file: " + e.getMessage()); } finally { // 确保文件被关闭 try { if (out != null) { out.close(); } if (fstream != null) { fstream.close(); } } catch (IOException ex) { // 处理关闭文件时的异常 log.error("Error closing file: " + ex.getMessage()); } }
|
脚本解析
首先我们看到查看结果树里面已经有了匹配的个数
也就是 bizcode_matchNr,id_matchNr 通过这个我们就可以知道具体匹配了多少个,那么就可以通过for循环来实现循环去获取我们对应的值,然后在观察对应的key的规则:
可以观察到是你的变量名+_+顺序数字组成,那么我们知道了具体规则就可以写for 循环了!
首先定义我们的变量也就是匹配的总个数:bizcode_matchNr
int invoiceCodeMatchNr = Integer.parseInt(vars.get("bizcode_matchNr"));
然后我们遍历根据规则获取对应的值:
for (int i = 1; i <= invoiceCodeMatchNr; i++) {
// 构造要写入的数据,这里只是简单的示例,你可以根据需要修改
String line = vars.get("bizcode_"+i);
String line2 = vars.get("id_"+i);
log.info(line);
}
然后将我们对应的信息写入csv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; // 文件路径 String filePath = "C:\\Users\\15424\\Desktop\\比赛\\biz.csv"; // 打开文件以追加模式写入(如果文件不存在,它将被创建) FileWriter fstream = new FileWriter(filePath); BufferedWriter out = new BufferedWriter(fstream);
// 写入数据到文件 out.write(line+","+line2);
|
完成的for 循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int invoiceCodeMatchNr = Integer.parseInt(vars.get("bizcode_matchNr")); int invoiceNumberMatchNr = Integer.parseInt(vars.get("id_matchNr"));
for (int i = 1; i <= invoiceCodeMatchNr; i++) { // 构造要写入的数据,这里只是简单的示例,你可以根据需要修改 String line = vars.get("bizcode_"+i); String line2 = vars.get("id_"+i); log.info(line); // 写入数据到文件 out.write(line+","+line2); out.newLine(); }
|
那么以上就是我们的shell脚本的完整信息。
查看结果
这样就可以看到我们的数据都已经写入近csv文件啦!
总结
这里我们就完成了所有的csv写入操作了,如果各位同学有不明白的地方欢迎随时留言!