美文网首页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