[英]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.