• Jmeter之BeanShell详解和夸线程调用


    Jmeter中常用的BeanShell

    前置处理器:BeanShell Preprocess

    采样器:BeanShellSampler
    后置处理器:BeanShell PostProcess
    断言:BeanShell断言

    Jmeter中的常用内置变量

    在这里插入图片描述

    具体应用:

    在这里插入图片描述后置处理器的应用: 

    在这里插入图片描述

     jmeter 夸线程调用

    前面讲了如何使用正则表达式提取值,一般提取的值在同一个线程里,随意哪个请求都是可以引用的,那如果别的线程组也想引用怎么办呢?这时就涉及到一个全局变量的知识点了,话不多说,直接实例走起。

    1、BeanShell创建全局变量(跨线程组):可以用Beanshell取样器或者Beanshell后置处理器

    1)创建一个局部的变量(线程组内):token

    2)使用Beanshell调用创建的局部变量token,并将全局变量命名为newtoken,示例${__setProperty(newtoken,${token},)}

    3)跨线程组调用全局变量

    方法1:${__P(newtoken)}; //调用全局变量

    方法2:${__property(newtoken)}; //也可以这样调用全局变量,和上面的写法是等价的

    方法3:Beanshell前置处理器-将newtoken拿过来赋值给token1,然后可以${token1}引用

    String a1=props.get("newtoken");

    vars.put("token1",a1)

    夸线程 实战 演示

    1、在【登录】线程组的[统一登录]请求下,右键>添加>后置处理器>正则表达式,把统一登录成功后的响应结果里的token用正则表达式提取出来,引用名称是“token”。

     添加beanshell 后置处理器:

    1. ${__setProperty(new_token,${token},)}; #将局部变量token 赋值给全局变量new_token
    2. String a=vars.get("token"); # 获取局部变量给变量a
    3. log.info("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");#打印日志 方便排查问题
    4. log.info("a="+a);#打印变量a 方便排查局部变量的值是否错误

     新建查询线程:

    添加http请求:

    添加beanshell预处理程序:

    1. String a1 = props.get("new_token"); #读取全局变量new_token 并赋值给a1
    2. vars.put("token2",a1); #把a1 赋值给 token2
    3. log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    4. log.info("token2="+token2);#打印token2

     在http请求头中使用token2变量:

     如果直接运行,通过日志发现,先运行查询线程,后运行登录线程,所以一直获取不到token,查询线程失败。

    解决办法:

    1)在测试计划中 选择独立运行每个线程组

     

    2)在查询线程中添加固定定时器

     

  • 相关阅读:
    类与对象(初级)
    python日志记录库logging介绍
    coverity工具 代码审计
    初中三年回忆录
    TIA博途中的TRACE功能具体使用方法示例
    TCP 四次挥手,可以变成三次挥手吗?
    还是了解下吧,大语言模型调研汇总
    重新定义分析 - EventBridge 实时事件分析平台发布
    【数据结构:排序算法】堆排序(图文详解)
    【历史上的今天】6 月 28 日:马斯克诞生;微软推出 Office 365;蔡氏电路的发明者出生
  • 原文地址:https://blog.csdn.net/fish_study_csdn/article/details/125485663