一、從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/zh-tw/n/197613.html