Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件

系列文章目录

提示:阅读本章之前,请先阅读目录


文章目录

  • 系列文章目录
  • 前言
  • 一、提取状态码
  • 二、提取token
  • 三、BeanShell 处理csv文件
  • 四、其他Jmeter文件调用csv
  • 五、完成
  • 更新日志


前言

有这样的一个场景,就是多个Jmeter文件,需要共同调用一个token,所以,就需要一个类似于postman的全局变量,但是jmeter是没办法跨文件实现全局变量的。

解决思路:

  1. 把token保存到一个csv文件
  2. 其他Jmeter文件调用这个csv文件,获取token

解决技术:

  1. JSON提取器,提取状态码,保存为变量:response_code,$.code
  2. JSON提取器,提取token,保存为变量:data_token_code,$.data.token
  3. BeanShell 后置处理程序,判断状态码是否为200,正常的,才有token,然后把token保存到csv文件,然后保证是覆盖原文件的,这样token都是最新的,并且只有一条,然后判断csv是否存在,不存在则自动创建

一、提取状态码

Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件_第1张图片

二、提取token

Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件_第2张图片

三、BeanShell 处理csv文件

Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件_第3张图片

// 判断状态码是否为200
if ("${response_code}" == "200" ){
	// 1. 读取csv文件,如果不存在则自动创建,并且采用覆盖的方式,覆盖原文件的内容
	FileWriter fstream = new FileWriter("D://testerTools//apache-jmeter-5.5//bin//商城//token.csv");
	// 这里备注一下,如果不要覆盖原文件,在路径后面加 true即可
	// FileWriter fstream = new FileWriter("D://testerTools//apache-jmeter-5.5//bin//商城//token.csv", true);
	// 2. 构建缓冲流
	BufferedWriter out = new BufferedWriter(fstream);
	// 3. 写入第一行token变量名,可写,可不写,不写的话,读取token的时候,读取第一行即可
	out.write("token");
	// 4. 换行
	out.write(System.getProperty("line.separator"));
	// 5. 写入token值
	out.write("${data_token_code}");
	// 6. 关闭
	out.close();
	// 7. 关闭文件
	fstream.close();
}

四、其他Jmeter文件调用csv

我们已经完成了对csv的token写入,那么其他文件调用,就非常简单了

Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件_第4张图片
Apache Jmeter BeanShell 实现跨文件跨线程全自动获取Token并写入CSV文件_第5张图片

五、完成

这样,我们只需要运行一次获取token的Jmeter文件,然后就可以愉快的,用其他Jmeter文件,实现自己负责的接口,无需每次去手动替换token了


更新日志

提示:将会持续优化更新

你可能感兴趣的:(Java,SE,apache,jmeter,java)