美文网首页Jmeter
Jmeter-多用户token提取

Jmeter-多用户token提取

作者: 小二哥很二 | 来源:发表于2019-11-16 15:53 被阅读0次
1、获取token

首先:通过登录的响应数据,获取token的字段


image.png

其次:在登录请求的取样器下添加后置处理器-正则表达式提取器:


image.png

最后:在该线程组添加http信息头管理器,将token作为一个全局变量供登录以后的接口使用


image.png
2、多用户提取token到本地文件

当我们模拟多用户并发时,只需要让登录执行一次,并获取token供下面的接口使用。如果按照上述方法,会有两个弊端:
第一、登录没法只执行一次;
第二、不停的登录请求,不停的生成token,导致下面的接口获取的只是一个token,而不是多个

那么,首先:在登录取样器下添加后置处理器-json Extractor

image.png

其中需要注意的是:
1)name of created variables:变量名称
2)json path expression:获取token->$.token,记住,一定有个点 “.”
3)Apply to:选择应用到主样本还是子样本

其次:添加JSR223 PostProcessor

image.png
注意保存的文件路径,代码如下:
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并发送请求!

3、其实最简单的方法就是在登录请求上加仅一次控制器,后面的请求获取token也不会都保持一致。哦也,不要打我哈哈

相关文章

网友评论

    本文标题:Jmeter-多用户token提取

    本文链接:https://www.haomeiwen.com/subject/yhpyictx.html