Javascript 在JMeter和BeanShell中,如何使变量小写?

Javascript 在JMeter和BeanShell中,如何使变量小写?,javascript,jmeter,lowercase,beanshell,Javascript,Jmeter,Lowercase,Beanshell,在JMeter的用户参数中,如何使变量小写 左列 my_lowercase_variable 右栏 ${__BeanShell('${my_variable}'.toLowerCase())} //fails 或 这样${my_lowercase_variable}就是${my_variable}的小写字母。试过引用、不引用、转义等等。不走运。欢迎使用任何技巧。此用法中的beanshell和JavaScript函数将失败,因为它们不会导入使用.toLowerCase所需的包 如果确实需要使

在JMeter的用户参数中,如何使变量小写

左列

my_lowercase_variable
右栏

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


这样
${my_lowercase_variable}
就是
${my_variable}
的小写字母。试过引用、不引用、转义等等。不走运。欢迎使用任何技巧。

此用法中的beanshell和JavaScript函数将失败,因为它们不会导入使用
.toLowerCase
所需的包

如果确实需要使用函数转换大小写(而不是首先将它们声明为小写),则可能需要编写完整的beanshell后处理器脚本以导入所需的包

自我提醒

事实证明,这是一个双班轮比恩谢尔取样器,而不是比恩谢尔命令。不幸的是,例子中并不完全如此

我在线程组下添加了BeanShell采样器,然后创建了一个变量。表单中不需要任何参数,只需要下面的两行脚本。只要我不改变变量,我就可以将数据复制到另一个变量,改变它,然后在需要的地方引用它的值

首先在一些用户参数中定义一个变量 即:

在用户首选项或定义列表下添加Bean采样器(下一步,它不是子进程)

提出:

String blah = "${my_initial_reference}"; // 
vars.put("blah", blah.toLowerCase());  //${blah} = "its in caps" now available
现在,通过名称/值对,我可以将${blah}作为值映射到任何进程名称所需的值


请注意,调试响应仍将以大写形式显示初始值,但您还将看到blah=its in caps,这正是我想要使用的

嗯,你的豆壳代码对我不起作用。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

只需添加一个函数即可

${__lowercase(${VAL},VALUE)}
${__uppercase(${VAL},VALUE)}
注:VAL可以是相关值或参数化值(e.r VAL=至下限或VAL=至上限)。我们可以在beanshell(预处理器/后处理器/采样器)中使用此函数。Jmeter版本使用(2.6)

可以在脚本中任何需要的地方使用它作为${VALUE}。

${{uu javaScript('${foobar}.toLowerCase())}
可以工作。如果输出为
${foobar}
而不是
所需值
,则表示尚未声明变量

请注意,变量仅在分析“用户定义变量”组件后定义。变量不能在单个“用户定义变量”组件中重复使用,例如:

该图像中的第二行将无法引用第一行中的变量
my_variable
。为了能够引用第一个变量,需要两个“用户定义变量”组件。第一个变量位于第一个组件中,第二个变量位于第二个组件中,例如:

这样,
${my\u lower\u case\u variable}
将成功地转换为
某些值


${uuu BeanShell(${myu variable}).toLowerCase())}
也可以使用。(请注意,BeanShell需要双引号。问题中的代码使用单引号。)

另一种方法是使用:

  • ${uuujavascript(vars.get('my\u variable').toLowerCase())}

  • ${\uuu BeanShell(vars.get(“my\u变量”).toLowerCase())}

    • var blah=“${my_initial_reference}”


      等等,toLowerCase()

      实际上我很接近,BeanShell采样器可以产生一个变量。只要我不更改它,我就可以将数据复制到另一个变量,即已更改的变量,然后引用该变量。@BlackGaff,“不导入使用
      .toLowerCase
      所需的包”是什么意思?(类似于
      “str”。toLowerCase()
      可以在Bean Shell和Javascript中工作,而不导入任何内容。)很抱歉给您带来不便,我已经键入了它,并且没有复制/粘贴,因此我确实忘记了您描述的引号。下载是使用此解决方案的先决条件吗?
      String blah = "${my_initial_reference}";
      vars.put("blah", blah.toLowerCase());  //${blah} now available
      
      ${__lowercase(${VAL},VALUE)}
      ${__uppercase(${VAL},VALUE)}