簡體   English   中英

在 JMeter 和 BeanShell 中,如何使變量小寫?

[英]In JMeter and BeanShell, how can I make a variable lowercase?

在 JMeter 的用戶參數中,如何使變量小寫?

左欄

my_lowercase_variable

右欄

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

或者

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

這樣${my_lowercase_variable}是小寫的${my_variable} 嘗試使用報價,沒有和轉義等。 沒運氣。 歡迎任何技巧或提示。

${__javaScript('${foobar}'.toLowerCase())}確實有效。 如果輸出是${foobar}而不是desired value ,則表示該變量尚未聲明

請注意,變量僅“用戶定義的變量”組件被解析后才定義。 變量不能在單個“用戶定義變量”組件中重復使用,例如:

在此處輸入圖片說明

該圖像中的第二行將無法引用第一行中的變量my_variable 為了能夠引用第一個變量,需要兩個“用戶定義變量”組件。 第一個變量將在第一個組件中,第二個變量將在第二個組件中,例如:

在此處輸入圖片說明

這樣, ${my_lower_case_variable}將成功轉換為some value


${__BeanShell( " ${my_variable} " .toLowerCase())}也有效。 (請注意,Bean Shell需要雙引號。您問題中的代碼使用單引號。)

另一種方法是使用vars.get

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

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

注意自我。

結果證明是 BeanShell Sampler 中的兩行代碼,而不是 __BeanShell 命令。 不幸的是,並不完全在示例中。

我在Thread Group下添加了BeanShell Sampler,然后做了一個變量。 表單中沒有參數只需要下面的兩個 liner 腳本。 只要我不更改變量,我就可以將數據復制到另一個變量,改為更改該變量,然后在需要的地方對該變量進行 Value 引用。

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

Name: my_initial_reference 
Value: ITS IN CAPS

在 User Preferences 或定義列表下添加一個 Bean Sampler(接下來,它不是子進程)

投放:

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

現在,使用名稱/值對,我可以將 ${blah} 作為值映射到任何需要它的進程名稱。

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

簡單的可以添加一個功能

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

注意:VAL 可以是相關值或參數化值(er VAL= TO LOWER 或 VAL= TO UPPER)。 我們可以在 beanshell (pre-processor/post-processor/sampler) 中使用這個函數。 Jmeter 版本使用 (2.6)。

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

嗯,你的 bean shell 代碼對我不起作用。 豆殼采樣器返回:

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

此使用中的 beanshell 和 JavaScript 函數將失敗,因為它們不會導入您使用.toLowerCase所需的包。

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

var blah = "${my_initial_reference}";

blah.toLowerCase();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM