我在JMeter問題上很新。BeanShell預處理器更新用戶定義變量
在測試腳本中,我有一個BeanShell PreProcessor元素,用於更新以前在「用戶定義的變量」元素中定義的一些變量。
後者這些變量在「Http Requests」中使用。但是,http請求中使用的值是默認值。
腳本似乎正在工作,由於一些調試打印();
我的問題是,如果有必要延遲腳本以確保BeanShell完成?
非常感謝您的關注
我在JMeter問題上很新。BeanShell預處理器更新用戶定義變量
在測試腳本中,我有一個BeanShell PreProcessor元素,用於更新以前在「用戶定義的變量」元素中定義的一些變量。
後者這些變量在「Http Requests」中使用。但是,http請求中使用的值是默認值。
腳本似乎正在工作,由於一些調試打印();
我的問題是,如果有必要延遲腳本以確保BeanShell完成?
非常感謝您的關注
沒有必要,因爲它是被之前要求執行把任何延遲BeanShell的預處理器。我建議您檢查jmeter.log文件以查看是否存在任何腳本問題,因爲Beanshell預處理器不會在任何位置報告錯誤,包括查看結果樹偵聽器。
至少有2種方式,以確保一切都很好,你的BeanShell腳本:
例測試用例:
鑑於以下測試計劃結構:
如果在beanshell函數後面提供參數「q」:
${__BeanShell(System.currentTimeMillis())}
,並期待爲查看結果樹「請求」選項卡中,你應該看到:
GET http://www.google.com/?q=1385206045832
,如果更改功能,像一些不正確的:
${__BeanShell(Something.incorrect())}
你會看到一個空白的請求。
改變現有的變量(或創建新的變量,如果不存在)的正確方法看起來像
vars.put("variablename", "variablevalue");
* 重要提示:* JMeter的變量是Java中的字符串,如果你想設置其他東西(日期,整數,無論)到JMeter變量你需要將其強制轉換爲字符串。
例子:
int i = 5;
vars.put("int_i", String.valueOf(i));
希望這有助於。
我也是jmeter的新手,但正如我所知,「用戶定義變量」中定義的變量是常量,因此您無法更改它們。我建議在預處理器或CSV數據集配置中使用「用戶參數」。
您可以更新「用戶定義變量」的值。
@theINtoy說得沒錯。
http://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell
確保您定義的變量沒有初始值,否則會刷新它在下一次迭代中。 – Armando
這是不正確的。可以使用BeanShell預處理器覆蓋用戶定義的變量的值。 參見:隨時改變JMeter的變量(http://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell) 本質: 假設你有一個用戶自定義在While循環中某處使用的值爲「true」的變量名爲「continue」。您可以將它設置爲「false」,如下所示: 'vars.put(「counter」,「false」);' – theINtoy