2016-05-17 22 views
-1

我有一個測試計劃如何清除頭經理編程

Thread-group 
HttpSampler 
    pre-processor 
    HttpHeaderManager[empty] 
    HttpRequestDefaults[empty] 
    Post-processor 

我使用的是預處理器腳本讀取一個JSON文件動態添加頁眉到headerManager。它進展順利。

import org.apache.jmeter.protocol.http.control.Header 
int min = args[0].toInteger() 
int max = args[1].toInteger() 
int random = min + (int) (Math.random() * ((max - min) + 1)); 
// here 'inputjson' referring to slurped json object 

inputjson.Headers.each{ 
     it.each{ key,value -> sampler.getHeaderManager().add(new Header(key.replace('$random',random.toString()),value.replace('$random',(random+2).toString()))); 
       } 
    } 

問題是,如果一個線程循環計數是3,那麼這個頭文件集合就會增加3次。

然後我加入後處理器腳本

sampler.getHeaderManager().clear() 

這一次初始[環-1]運行是要細,下一個[環-2]環是沒有報頭的明確請求。我如何能實現,每個請求將只有1套頭

+0

如果在預處理器中添加'sampler.getHeaderManager()。clear()'在inputjson.Headers.each {'循環之上? –

+0

讓我檢查!!! ..它的好主意 –

+0

它不工作 –

回答

-1

這將

加入sampler.setHeaderManager(new HeaderManager())做的只是去的headerManger前添加部分。

每次新的HeaderManger將被添加並將被使用。不知道這是最好的解決方案,但它是一個工作解決方案。

0

不要使用f $%$ ing方法HeaderManager.clear(),我仍然得不到這種存在,也不要在後處理器中這樣做,在將標頭添加到標題管理器之前,最好在預處理器中執行此操作。

headerMgr = sampler.getHeaderManager(); 
while(headerMgr.getHeaders().iterator().hasNext()) { 
    headerName = headerMgr.getHeaders().iterator().next().getStringValue().split("\\s+")[0]; 
    headerMgr.removeHeaderNamed(headerName); 
}