【问题标题】:JMeter - How to pass an array into a property variable?JMeter - 如何将数组传递给属性变量?
【发布时间】:2017-01-13 00:07:40
【问题描述】:

我在 setUp 线程组下有一个 BeanShell PostProcessor。
它会生成一个 ArrayList,我想将它作为系统属性传递给测试计划中的测试线程组。
该数组包含测试组中的线程数。
语法是什么?我应该如何在 Tread 组“线程数(用户)”中引用该数组的元素?

这是我在设置线程组中的内容

ArrayList users = new ArrayList();
${__setProperty(users, ${users})};

这是我输入的线程数

${__P(users).get(0)}

它不起作用。
谢谢

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:

    如果你真的需要“ArrayList”,你可以使用bsh.shared namespace

    1. 在 setUp Thread Group 中,将 ArrayList 放入“bsh.shared”命名空间,如:

      ArrayList users = new ArrayList();
      users.add(5);
      bsh.shared.users=users;
      
    2. 在普通线程组中,您可以通过__BeanShell function 读取值:

      ${__BeanShell(bsh.shared.users.get(0),)}
      

    但是我觉得你的测试设计得很糟糕,你可以摆脱脚本或至少使用数组。

    【讨论】:

    • Dmitri,您的建议无效。我附上了截图。为什么你认为这是一个糟糕的设计?我在 setUp 线程组中读取了一次 JSON 文件,并将所有变量数组传递给测试计划中的其他线程组。
    • 我的建议确实有效,setUp 线程组中的 Beanshell 预处理器不起作用,因为 PostProcessors 设计用于与采样器一起使用,如果没有采样器 - 后处理器将被忽略。将其更改为采样器,一切都将按预期开始工作。有关在 JMeter 测试中使用 Beanshell 脚本的更多详细信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。
    • 谢谢你,德米特里。它现在真的有效!在我的真实示例中,我附加了一个 HTTP 采样器和 BeanShell PostProcessor。您的解决方案也适用于这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2019-06-05
    相关资源
    最近更新 更多