2012-06-30 16 views
1

我有一個BSF後處理器添加到採樣器。
在處理器後的腳本是:使用BSF後處理器中使用的變量作爲另一個採樣器中的參數

var array = JSON.parse(prev.getResponseDataAsString()); 

array.forEach(function(object) 
{ 
    OUT.println("patient_id: "+object.patientId); 
    OUT.println("fname: "+object.fname); 
    OUT.println("lname: "+object.lname); 
}); 

現在我想用object.patientId,object.fname,object.lname值作爲另一個請求的參數的參數。

E.g.

Thread Group 
- Sampler1 
    BSF Post-Processor 
- Sampler2 

我想在Sampler2中使用BSR Post Processor的JavaScript中的變量作爲Sampler2中的參數。那可能嗎?

回答

2

輕鬆:BSF PostProcessor提供讀來的JMeter變量/屬性/寫訪問:

瓦爾 - (JMeterVariables) - 給變量讀/寫訪問: vars.get(鍵); vars.put(鍵,VAL); vars.putObject(「OBJ1」,new Object()); vars.getObject(「OBJ2」);

道具 - (JMeterProperties - 類java.util.Properties) - 例如 props.get(「START.HMS」); props.put( 「PROP1」, 「1234」);

在最簡單的情況下,你可以使用

vars.put(patientId,object.patientId.toString()); 
vars.put(fName,object.fname.toString()); 
vars.put(lName,object.lname.toString()); 

在BSF後處理程序設置變量,然後得到他們重視像

vars.get("patientId") 

${patientId} 

但是,因爲你正在提取所有記錄在foreach循環中一旦你不能用這種方式。

在這種情況下,您必須更好地使用以下內容:將foreach循環中提取的所有記錄值寫入csv-file,然後使用例如。 CSV Data Set Config讀取記錄一個接一個的循環和利用價值的Sampler2一起:

While Controller 
    CSV Data Set Config 
    Sampler 2 

......同樣,如果我找到另一個更好的辦法,我會很高興知道。

+0

您的意思是我應該使用Javascript的文件處理方法直接從BSF後處理器將記錄值寫入csv文件? 我可以使用類似的東西嗎? 函數WriteToFile() var fso = new ActiveXObject(「Scripting.FileSystemObject」); var s = fso.CreateTextFile(「Test.csv」,true); (object.patientId.toString()+','+ object.fname.toString()+','+ object.lname.toString()); s.Close(); } –

+0

我試着將上面的代碼寫入一個csv文件的記錄。我在Ubuntu上使用JMeter,這就是爲什麼我認爲它給我一個使用ActiveXObject的錯誤。是否有任何其他方式使用JavaScript寫入一個CSV文件?我搜索了很多,但找不到任何東西。 –

+0

另外,如果我必須在BSF後處理器中使用Java作爲語言,那麼是否還有任何jar文件需要分別複製到JMeter的文件夾中?我嘗試使用Java來處理上述場景。它說: BSF腳本中的問題org.apache.bsf.BSFException:無法加載語言:java –

相關問題