【2】Jmeter获取token,模拟多用户并发及token存储文本文件

按以下步骤来,以下各种处理程序的放置位置很重要!!不然会出现各种问题

1、setup线程组

  • 前置获取token的接口(login,以下都用login表示获取token接口)请求,获取类似token等后续需要用的参数,并写入文本文件

2、获取上层接口返参

  • login接口配置JSON提取器,json表达式可以通过结果树,选择请求的显示格式为json path tester,通过右侧JSON Path Expression来提取参数变量 (https://www.cnblogs.com/laumcc/p/12319612.html)

  • 这一步也可以用“后置处理器-正则提取器”来提取参数

  • PS:【JSON提取器】放在login层级下方

3、接口参数写入文件,用于后续使用

  • JSR223后置处理程序,用java语言将参数写入文本文件,若文件内含,则存入前过滤下,或者后续接口请求时过滤【2】Jmeter获取token,模拟多用户并发及token存储文本文件_第1张图片

     以下是在存储前过滤

    //请求login接口返回token,Json或正则提取后,存储
    FileOutputStream fps1 = new FileOutputStream("/file_path/token.txt",true);
     
    OutputStreamWriter osw1 = new OutputStreamWriter(fps1);
    BufferedWriter bw1 =new BufferedWriter(osw1);
    
    if("${token}"==""){
    	return ;}
    bw1.append("${token}\n"); 
     
    if(bw1!=null){bw1.close();}
    if(osw1!=null){osw1.close();}
    if(fps1!=null){fps1.close();}
  • 若文本文件存入的数据条数多于线程数,同一个token重复写入,1、JSR223后置处理器放到login接口层级下方,Json提取器后面【不能放到测试计划层级下,不能与线程组同一层级

4、后续token为入参/header的接口请求

  • 【CSV数据文件设置】用于提取本地文件的数据,放在测试计划层级下,与线程组同一层级【2】Jmeter获取token,模拟多用户并发及token存储文本文件_第2张图片
  •  后续接口http信息头管理器(header)的token值 ${token} ,即可引用【2】Jmeter获取token,模拟多用户并发及token存储文本文件_第3张图片

仍存在个别疑惑,如果有老铁知道原因,求解惑,感激不尽

1、setUp线程组拿到token参数,但值为空,尝试增加【调试取样器】,token值就拿到了(JSON Path 表达式没有写错!!)

你可能感兴趣的:(Jmeter性能测试,jmeter,java,开发语言)