Jmeter提取接口返回数据并存储为文件

场景

需要对单个接口执行压测,请求该接口需带上token值,且每次发起请求的token值不同。token值是由登录接口返回

解决方法

先使用参数化方式执行登录接口,使用JSON提取器获取token值,使用beanshell将值存储至文件

执行

登录接口返回的数据形式如下:

{"code":1,"msg":"请求成功","data":{"phone":"13055555555","token":"eyJhdWQiOiIxMzV4cCIaNjk3LCJ1c2VySWQiOiIxMzA0MzISJ9"}}

添加JSON提取器
Jmeter提取接口返回数据并存储为文件_第1张图片
分别填入变量名与提取路径
提取多个值,可用;进行分隔

phone;getToken
$.data.phone;$.data.token

Jmeter提取接口返回数据并存储为文件_第2张图片
添加BeanShell处理器
Jmeter提取接口返回数据并存储为文件_第3张图片
Jmeter提取接口返回数据并存储为文件_第4张图片
脚本代码:

FileWriter fstream = new FileWriter("D:\\work\\test.txt",true);
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("phone")+",");
out.write(vars.get("getToken")+"\n");
out.close();
fstream.close();

执行后可成功在对应位置找到test.txt文件,里面存储手机号与对应的token值

遇到的问题

最初写脚本时文件路径写为D:\work\test.txt
执行后报错信息显示如下:

 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval	Sourced file: inline evaluation of: ``FileWriter fstream = new FileWriter("D:\work\test.txt",true); BufferedWriter out . . . '' Token Parsing Error: Lexical error at line 1, column 41.  Encountered: "w" (119), after : "\"D:\\"

将文件路径改写为D:\\work\\test.txtD:/work/test.txt 后可正确执行并输出文件
具体原因可查询java中文件路径写法
在java中反斜杠“\”需要进行转义,写成“\”才能被识别

你可能感兴趣的:(测试,Jmeter,BeanShell)