【问题标题】:In JMeter and BeanShell, how can I make a variable lowercase?在 JMeter 和 BeanShell 中,如何将变量设为小写?
【发布时间】:2011-06-12 22:06:06
【问题描述】:

在 JMeter 的用户参数中,如何将变量设为小写?

左栏

my_lowercase_variable

右栏

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

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

这样${my_lowercase_variable}${my_variable} 的小写。尝试了引用和没有和转义等。没有运气。欢迎任何技巧或提示。

【问题讨论】:

    标签: javascript jmeter lowercase beanshell


    【解决方案1】:

    var blah = "${my_initial_reference}";

    blah.toLowerCase();

    【讨论】:

      【解决方案2】:

      ${__javaScript('${foobar}'.toLowerCase())} 确实工作。如果输出的是${foobar}而不是desired value,则表示该变量还没有被声明

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

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

      这样,${my_lower_case_variable} 将成功转换为some value


      ${__BeanShell(<b>"</b>${my_variable}<b>"</b>.toLowerCase())} 也可以。 (请注意,Bean Shell 需要双引号。您问题中的代码使用单引号。)

      另一种方法是使用vars.get:

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

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

      【讨论】:

        【解决方案3】:

        只需添加一个功能

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

        注意:VAL 可以是相关的或参数化的值(e.r VAL= TO LOWER 或 VAL= TO UPPER)。我们可以在 beanshell(预处理器/后处理器/采样器)中使用此功能。使用 (2.6) 的 Jmeter 版本。

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

        【讨论】:

        • 下载the plugin 是使用此解决方案的先决条件吗?
        【解决方案4】:

        此使用中的 beanshell 和 JavaScript 函数将失败,因为它们没有导入您使用 .toLowerCase 所需的包。

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

        【讨论】:

        • 其实我已经很接近了,BeanShell Sampler 可以做一个变量。只要我不更改它,我就可以将数据复制到另一个变量,即已更改的变量,然后引用它。
        • @BlackGaff,你说的“不要为了使用.toLowerCase而导入你需要的包”是什么意思? ("str".toLowerCase() 之类的东西可以在 Bean Shell 和 Javascript 中使用,无需导入任何东西。)
        【解决方案5】:

        注意自己。

        它原来是 BeanShell Sampler 中的两个衬里,而不是 __BeanShell 命令。不幸的是,不完全在示例中。

        我在Thread Group下添加了BeanShell Sampler,然后做了一个变量。表单中不需要任何参数,只需要下面的两个衬里脚本。只要我不更改变量,我就可以将数据复制到另一个变量,改为更改它,然后在需要的地方对其进行值引用。

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

        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 大写字母,这是我想要使用的。

        【讨论】:

          【解决方案6】:

          嗯,你的 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
          

          【讨论】:

          • 很抱歉给您带来不便,我已经输入了它而不是复制/粘贴,所以我确实忘记了您所描述的引号。
          猜你喜欢
          • 2021-12-16
          • 1970-01-01
          • 2016-06-23
          • 2016-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多