1、获取token
首先:通过登录的响应数据,获取token的字段
image.png
其次:在登录请求的取样器下添加后置处理器-正则表达式提取器:
image.png
最后:在该线程组添加http信息头管理器,将token作为一个全局变量供登录以后的接口使用
image.png
2、多用户提取token到本地文件
当我们模拟多用户并发时,只需要让登录执行一次,并获取token供下面的接口使用。如果按照上述方法,会有两个弊端:
第一、登录没法只执行一次;
第二、不停的登录请求,不停的生成token,导致下面的接口获取的只是一个token,而不是多个
那么,首先:在登录取样器下添加后置处理器-json Extractor
其中需要注意的是:
1)name of created variables:变量名称
2)json path expression:获取token->$.token,记住,一定有个点 “.”
3)Apply to:选择应用到主样本还是子样本
其次:添加JSR223 PostProcessor
注意保存的文件路径,代码如下:
FileWriter fileWriter = new FileWriter(new File("E:\\Jmeterlearning\\token.csv"), true);
BufferedWriter writer = new BufferedWriter(fileWriter);
writer.append(vars.get("token")+"\n");
if (writer != null) {
writer.close();
}
if (fileWriter != null) {
fileWriter.close();
}
第二种代码,不需要Json提取器:
import com.alibaba.fastjson.*;
import org.apache.jmeter.services.FileServer;
String baseDir = FileServer.getFileServer().getBaseDir();
String fileName = baseDir + "/token.csv";
FileWriter fileW=new FileWriter(fileName,true);
BufferedWriter bufferW=new BufferedWriter(fileW);
String response=prev.getResponseDataAsString();
JSONObject responseJson = JSON.parseObject(response);
JSONObject dataJson = responseJson.getJSONObject("data");
String userName1 = dataJson.getString("userName");
String token1 = dataJson.getString("token");
bufferW.write(userName1+","+token1);
bufferW.write(System.getProperty("line.separator"));
bufferW.close();
fileW.close();
最后:在其它线程组中,添加http信息头管理器,将token参数添加,记得将保存到本地的token文件做参数化,这样,其它线程的取样器才能读取到token并发送请求!
网友评论