2011-01-21 104 views
2

在JMeter的用戶參數中,我怎樣才能使變量小寫?在JMeter和BeanShell中,我怎樣才能使變量小寫?

左列

my_lowercase_variable 

右列

${__BeanShell('${my_variable}'.toLowerCase())} //fails 

${__javaScript('${my_variable}'.toLowerCase())} //fails 

使得${my_lowercase_variable}${my_variable}小寫。試着用引用和不用逃避等等。沒有運氣。任何技巧或提示歡迎。

回答

3

自我提醒。

事實證明,它是BeanShell Sampler中的一個雙線程而不是__BeanShell命令。不幸的是,不完全在這些例子。

我在Thread Group下添加了BeanShell Sampler,然後創建了一個變量。表單中沒有參數只需要下面的兩個班輪腳本。只要我不更改變量,我可以將數據複製到另一個變量,改變它,然後在任何需要的地方創建一個Value引用。

首先在一些用戶參數,定義一個變量或如 即:

Name: my_initial_reference 
Value: ITS IN CAPS 

添加一個Bean取樣下的用戶首選項或定義列表(就在旁邊,它不是一個子進程)

認沽在:

String blah = "${my_initial_reference}"; // 
vars.put("blah", blah.toLowerCase()); //${blah} = "its in caps" now available 

現在在名稱/值對下,我可以將$ {blah}映射爲任意進程名稱所需的值。

請注意,調試響應仍然會顯示大寫字母的初始值,但您還會看到blah =它的大寫字母,這正是我想要使用的。

+0

(更新後的原文中帶有變量名的引號) – sf2k 2011-06-01 19:33:34

0

此次使用中的beanshell和JavaScript函數將失敗,因爲它們不會導入所需的包以便使用.toLowerCase

如果您確實需要使用函數來轉換大小寫(而不是首先將它們聲明爲小寫),則可能需要編寫完整的beanshell後處理器腳本才能導入所需的軟件包。

+0

實際上我很接近,BeanShell Sampler可以創建一個變量。只要我不改變它,我可以將數據複製到另一個變量,更改後的變量,然後引用它。 – sf2k 2011-01-21 23:21:30

+0

@BlackGaff,你的意思是「不要導入你需要的軟件包來使用`.toLowerCase`」? (類似於`「str」.toLowerCase()``在Bean Shell和Javascript中都可以工作,而不需要導入任何內容。) – Pacerier 2015-10-09 11:14:38

2

嗯,你的豆殼代碼不適合我。該豆殼採樣返回:

Response code: 500 
Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String blah = AAP; vars.put("blah", blah.toLowerCase()); //${blah} now availab . . . '' : Typed variable declaration : Void initializer 

我加了兩個雙引號來解決這個問題:

String blah = "${my_initial_reference}"; 
vars.put("blah", blah.toLowerCase()); //${blah} now available 
+1

抱歉給我帶來了不便,我輸入了它而不是複製/粘貼,所以我確實已經忘記了你所描述的引號。 – sf2k 2011-06-01 21:02:17

2

只要能增加一個功能

${__lowercase(${VAL},VALUE)} 
${__uppercase(${VAL},VALUE)} 

注:VAL可以關聯或paramiterized值(呃VAL =下或VAL =上)。我們可以在beanshell(預處理器/後處理器/採樣器)中使用此函數。使用Jmeter版本(2.6)。

可以在腳本中以任何我們想要的方式使用它作爲$ {VALUE}。

1

${__javaScript('${foobar}'.toLowerCase())}確實工作。如果輸出${foobar}而不是desired value,這意味着該變量尚未宣佈

注意變量定義只「用戶定義變量」組件已經解析。變量不能單一的「用戶定義的變量」組分例如爲:

enter image description here

中重複使用該圖像中的第二行不能夠參考變量my_variable的第一排。爲了能夠引用第一個變量,需要兩個「用戶定義的變量」組件。第一變量是在第一組分和在第二個中的第二可變,例如:

enter image description here

就這樣,${my_lower_case_variable}將成功地被轉換成some value


${__BeanShell("${my_variable}".toLowerCase())}也適用。 (請注意,豆殼需要雙引號在你的問題中的代碼使用單引號。)

另一種方法是使用vars.get

  • ${__javaScript(vars.get('my_variable').toLowerCase())}

  • ${__BeanShell(vars.get("my_variable").toLowerCase())}