在使用jmeter做接口测试或者性能测试的时候,经常需要用过接口A的值来请求接口B的值,有时还需要将响应结果的值保存到文件中(如性能测试中,我们需要获取登录态,后续进行引用)。本文主要针对以上场景使用提取器将响应结果的值写入到文件中,后续需要调用,使用csv数据文件设置进行读取调用。
2.我们用提取器将响应结果中需要的字段提取出来,此处我们用的 json提取器.(如下,我们要提取响应结果中value中的sessionstr,userid,firmid)
3.添加三个提取器,分别对应要提取的三个字段(此处我们就展示一个示例)
4.提取器添加好了之后,我们可以执行一下,用 调试取样器 看看是否成功取到了值(如图,证明提取成功了)
5.接下来我们把获取到的变量值写进csv文件中,我们先添加一个beanshell后置处理程序(在后置处理器里找)
6.添加好了后,我们在script框中编写下边的代码(大家根据实际情况进行更改)
7.编写完成后,就完成提取的步骤了。我们来执行一下脚本,看看结果(执行完成后,该目录下自动生成了文件并写入了数据)
8.进行调用,此处使用csv数据文件设置(配置元件中进行添加)来进行读取csv文件。添加完成过后,修改下配置后使用。
9.csv数据文件设置 设置完以后接下来我们在对应的请求中进行调用,使用${刚刚设置的变量名}。我们这里在请求头中进行调用这3个变量。(请求体也是一样的,${变量名})
1.首先准备取样器(请求),获取响应结果。
2.我们用提取器将响应结果中需要的字段提取出来,此处我们用的 json提取器.(如下,我们要提取响应结果中value中的sessionstr,userid,firmid)
3.添加三个提取器,分别对应要提取的三个字段(此处我们就展示一个示例)
4.提取器添加好了之后,我们可以执行一下,用 调试取样器 看看是否成功取到了值(如图,证明提取成功了)
5.接下来我们把获取到的变量值写进csv文件中,我们先添加一个beanshell后置处理程序(在后置处理器里找)
6.添加好了后,我们在script框中编写下边的代码(大家根据实际情况进行更改)
import org.json.JSONObject;
//写入文件
//本地存储文件路径
FileWriter fs=new FileWriter("D:/apache-jmeter-5.1.1/bin/token.csv",true);
BufferedWriter out=new BufferedWriter(fs);
//提取出来的token,并通过,换列
out.write("${sessionStr}");
out.write(",");
out.write("${userId}");
out.write(",");
out.write("${firmId}");
out.newLine(); // 添加换行符
out.close();
fs.close();
(大家根据自己实际需要保存的数据进行更改哈)
7.编写完成后,就完成提取的步骤了。我们来执行一下脚本,看看结果(执行完成后,该目录下自动生成了文件并写入了数据)

8.进行调用,此处使用csv数据文件设置(配置元件中进行添加)来进行读取csv文件。添加完成过后,修改下配置后使用。
字段名 | 解释 |
Filename | 文件名(点击浏览也可进行选择) |
File encoding | 文件编码格式 |
Variable Names | 变量名称(如果多个需要用,号进行分割) |
Ignore first line | 是否忽略首行(设置为True就不会读取第一行的数据) |
Delimiter | 分隔符(默认为,) |
Allow quoted data? | 是否允许带引号 |
Recycle on EOF? | 遇到文件结束符EOF 后再次循环 |
Stop thread on EOF? | 遇到文件结束符EOF 后停止运行线程? |
Sharing mode | 线程共享模式 |
9.csv数据文件设置 设置完以后接下来我们在对应的请求中进行调用,使用${刚刚设置的变量名}。我们这里在请求头中进行调用这3个变量。(请求体也是一样的,${变量名})
10.我们来循环执行下这个调用的接口。
(可以看到,请求头中的值和我们csv数据文件中一致,说明我们调用成功了。)
感谢大家的耐心观看!如对您有帮助,就是我最大的动力