一、从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
微信扫一扫
支付宝扫一扫