一、从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