Jmeter接口实战(二)之get请求结果写入文件

第二式:get请求结果写入文件



文章目录

  • Jmeter接口实战(二)之get请求结果写入文件
  • 前言
  • 一、效果图
  • 二、知识点分析
  • 1.获取页面数据的接口怎么找
  • 2.json提取器
  • 使用场景①:提取一个值,例如token
  • 使用场景②:同一个字段出现多次,全部提取出来,例如响应中ID出现10次
  • 3.Beanshell将数据写入文件
  • 总结



前言

本系列文章将会教你由浅入深,快速上手Jmeter。
场景:要写一个审核接口的压测,发现传入的参数是变化的,例如ID,number之类的,那我就要在审核接口前实时获取一下这些参数信息,两种方法:
①简单点直接JDBC连数据库,写SQL取值
②有些时候不方便连数据库怎么办呢,那就通过接口获取一下吧

一、效果图

先上效果图,思路:一般打开某个菜单时,会有一个获取数据接口,我们拿到response之后,从众多的响应数据中,利用json提取器提取出想要的字段信息,然后写入文件中,方便下一个接口取数据用。

jemeter填写Query jmeter结果写入文件_jemeter填写Query


jemeter填写Query jmeter结果写入文件_jemeter填写Query_02


jemeter填写Query jmeter结果写入文件_写入文件_03

import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;

File file = new File("${filepath}"+"test.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
String data="";

for(int i=1;i<=Integer.parseInt("${page}");i++){
	data += vars.get("taskid_"+i)+","
		+ vars.get("CCID_"+i);

	if(i != Integer.parseInt("${page}")){
		data = data + "\n";
	}
}
bw.write(data);
bw.close();

二、知识点分析

1.获取页面数据的接口怎么找

瞪大你铜铃般的小眼睛看看,假如你当前页面有10条数据,打开F12,看preview,找一个有一列数字的接口,数值和当面页面数据条数相对应,把这个接口填到jmeter里面,给两个例子看看

jemeter填写Query jmeter结果写入文件_数据_04


这个是在csdn中进行搜索拿到的接口数据

jemeter填写Query jmeter结果写入文件_写入文件_05

2.json提取器

使用场景①:提取一个值,例如token

右键–》添加后置处理器–》json提取器

jemeter填写Query jmeter结果写入文件_数据_06


jemeter填写Query jmeter结果写入文件_数据_07

使用场景②:同一个字段出现多次,全部提取出来,例如响应中ID出现10次

如果想取10条数据的taskid,怎么写呢
分析:
1.首先是一个根节点,下面找到detaDetail–>$.detaDetail
2.在下面是一个数组,每个数组下面都有字符串,类似这种[{…},{…},{…}…]
我想取的是每个字符串里面的taskid,这就表示把[]
中每个taskid都取出来

$.detaDetail[*].taskid

3.如果只想取指定花括号下的taskid怎么写呢,想取第几个,n就写几

$.detaDetail[n].taskid

jemeter填写Query jmeter结果写入文件_数据_08


4.如果想取多个字段的值,中间用分号隔开

jemeter填写Query jmeter结果写入文件_写入文件_09

3.Beanshell将数据写入文件

右键–》添加后置处理器–》添加beanshell postprocessor

jemeter填写Query jmeter结果写入文件_jmeter_10


里面有两个参数${filepath}–》是要写入的文件的路径,可以添加一个配置原件【用户自定义的变量】,或者在测试计划下面添加变量,很灵活的,怎么喜欢怎么来

用户自定义的变量

jemeter填写Query jmeter结果写入文件_java_11


测试计划变量

jemeter填写Query jmeter结果写入文件_写入文件_12



${page}是我取数接口中的条数,这个条数,我想根据压测情况来自定义值

jemeter填写Query jmeter结果写入文件_数据_13


来看下具体写法

先创建文件,然后把参数以逗号分隔进行拼接,然后写入文件中

import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
// 创建文件
File file = new File("${filepath}"+"test.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
String data="";
// 拼接参数
for(int i=1;i<=Integer.parseInt("${page}");i++){
	data += vars.get("dw_taskid_"+i)+","
		+ vars.get("dw_CCID_"+i);

	if(i != Integer.parseInt("${page}")){
		data = data + "\n";
	}
}
// 写入文件
bw.write(data);
bw.close();

总结

tips:在选项下面有个【日志查看】执行脚本时,可以打开日志,注意路径中有中文符号时,日志会报错,改成英文格式即可

我觉得两点比较重要吧
①json提取器提取多个值,要用星号去匹配
②beanshell将结果写入文件,需要有一点代码基础,或者能看懂大概复制粘贴也行,最重要的是,要根据自己的业务接口去思考。

下期预告,讲讲怎么读取文件中的数据,小伙伴们要有耐心多多练习呀~