JMeterToken使用全攻略

一、从JMeterToken中提取

JMeterToken是JMeter中的一种鉴权机制,在JMeter测试过程中非常重要。但是我们在接口调用过程中需要获取JMeterToken的值,一般情况下JMeterToken是通过Cookie传递的。我们可以通过使用正则表达式或者JMeter内置的PostProcessor等方式从返回的接口响应中提取出JMeterToken的值。

//使用正则表达式提取
//假设响应中包含了 token=xxx 的字符串,我们可以使用如下的 PostProcessor 来提取出值:
Regular Expression Extractor
- Apply to: Main sample and sub-samples
- Reference Name: JMeterToken
- Regular Expression: token=(.+?)
- Template: $1$

通过使用上述的PostProcessor,即可将JMeterToken的值存储到变量JMeterToken中使用。

二、JMeterToken和Cookie

如上所述,JMeterToken是通过Cookie传递的。当我们访问登录接口的时候,服务器会生成一个JMeterToken的值,并将其写入Cookie中,然后返回给客户端。客户端在后续请求中需要将JMeterToken的值作为Cookie发送给服务器,以完成接口的鉴权。

//使用HTTP Cookie Manager配置Cookie信息
//以下是配置HTTP Cookie Manager的方法:
HTTP Cookie Manager

//接下来即可发送请求,并自动使用Cookie

三、JMeterToken值传递

在测试复杂业务场景时,可能需要JMeterToken的值能够在多个请求之间进行传递。我们可以使用JMeter中的变量来实现这一点。需要将从响应中提取出的JMeterToken的值存在一个变量中,然后在需要使用的请求中使用该变量。

//以下为设置变量的方法:
User Defined Variables
- Name: JMeterToken
- Value: ${JMeterToken}

通过上述方式设置变量后,在接口调用过程中需要使用JMeterToken的值的地方,具体值使用 ${JMeterToken} 表示即可。

四、JMeterToken不合法

在某些情况下,JMeterToken的值可能会不合法,这时候需要对其进行处理。

//以下为判断变量是否存在、是否为空、是否合法的方法:
BeanShell Assertion
- Script:
if(vars.get("JMeterToken")!=null 
   && !vars.get("JMeterToken").isEmpty()
   && !vars.get("JMeterToken").equals("invalid")){
    // do something
}else{
    AssertionResult.setFailure(true);
    AssertionResult.setFailureMessage("JMeterToken is not valid!");
}

通过使用上述的断言,在检查JMeterToken的值是否合法时可以给出必要的提示。

五、JMeterToken怎么处理

在测试过程中,我们需要对JMeterToken进行处理。我们可以通过使用PreProcessor、PostProcessor、Beanshell等方式,在请求发送之前或者响应获取之后进行处理。

//以下为将JMeterToken值添加到请求的Headers中的方法:
HTTP Header Manager
- Name: JMeterHeaders
- Value: token=${__eval(${JMeterToken})}

通过使用上述的Header Manager,在请求中添加了JMeterToken的值的Header后续请求即可携带该值。

六、JMeterToken传不进去

在一些需要通过JMeterToken进行鉴权的请求中,如果直接使用变量引用JMeterToken的值可能会失败。这时候我们需要进行一些特殊处理。

//以下为通过Beanshell进行特殊处理的方法:
BeanShell PreProcessor
- Script:
String token = vars.get("JMeterToken");
String cookie = "token="+token;
props.put("Cookie", cookie);

通过使用上述的PreProcessor,我们将生成的Cookie值直接存储到JMeter的全局属性中,以便后续的请求中可以直接使用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/197613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-03 20:05
下一篇 2024-12-03 20:05

相关推荐

  • Python离线库打包全攻略

    Python离线库打包是将Python程序所依赖的库文件打包成一个独立的文件,以便在不安装Python环境的情况下运行Python程序。下面我们将从以下五个方面详细阐述Python…

    编程 2025-04-27
  • Python web开发全攻略

    Python作为一门高性能、易学易用的编程语言,被广泛应用于web开发。我们将从多个方面来探究Python在web开发中的应用场景和实现方法。 一、Django框架 Django是…

    编程 2025-04-27
  • Spring Boot面试全攻略

    一、Spring Boot简介 Spring Boot是Spring框架的后续版本,简化了Spring的配置,让使用Spring更加方便快捷。使用Spring Boot可以实现快速…

    编程 2025-04-23
  • Python查看库版本全攻略

    Python是一种简单易学的编程语言,被广泛应用于各种领域,包括自然语言处理、机器学习、人工智能等。在开发Python应用程序时,我们常常需要使用第三方库或模块。在某些情况下,我们…

    编程 2025-04-02
  • 小程序日历全攻略

    一、小程序日历授权 第一步,要让小程序获取用户的授权,才能使用小程序日历。授权方式如下: wx.authorize({ scope: ‘scope.calendar’, succe…

    编程 2025-02-25
  • Python遍历List全攻略

    一、Python遍历List中嵌套字典 在Python中,List中可以放置不同类型的数据,包括字典。如果List中嵌套了字典,我们可以通过两种方式进行遍历: 1、使用for循环嵌…

    编程 2025-02-24
  • Mac Android开发全攻略

    一、Mac Android Studio Mac Android Studio是一个非常流行的集成开发环境(Integrated Development Environment,I…

    编程 2025-02-24
  • Docker安装Python全攻略

    一、Docker安装Python3 Docker是一个开源的容器化平台,Python是一种高级编程语言,两者的结合可以让Python的开发、打包、部署变得更加简单、快速、可靠。 在…

    编程 2025-02-05
  • Linux解压WAR文件全攻略

    一、什么是WAR文件 1、WAR文件是Java Web应用的打包格式。它是一种使用ZIP压缩格式的归档文件,里面包括了所有用于运行Web应用程序的相关内容,包括Java类文件、Ja…

    编程 2025-02-01
  • JS控制滚动条滚动全攻略

    一、JS控制滚动条滚动指定位置 在一些情况下,我们希望通过JS控制滚动条滚动到某一个特定的位置。这个时候我们可以使用JS的 scrollTop 属性。 window.scrollT…

    编程 2025-01-13

发表回复

登录后才能评论