【问题标题】:Store Jmeter sampler properties value using beanshell preprocessor使用 beanshell 预处理器存储 Jmeter 采样器属性值
【发布时间】:2014-12-06 19:06:27
【问题描述】:

我有一个 TCP 采样器的测试计划,其中 HOST 和 PORT 使用 TCP 采样器配置定义。

我已经为 TCP 采样器配置中定义的 TCP 连接定义了“端口”值,我需要这个值 (TCPSampler.port=3001) 作为对服务器的请求的一部分。

我正在尝试使用 beanshell 预处理器来捕获它并将其存储在用户定义的变量中。

关于如何实现这一点的任何想法。

感谢您的帮助。

【问题讨论】:

    标签: jmeter preprocessor beanshell


    【解决方案1】:

    将以下代码放入“要发送的文本”输入中

    TCPSampler.port=${__BeanShell(ctx.getCurrentSampler().getPort();,port)}
    

    分解为:

    1. __Beanshell 允许在脚本的任何位置执行任意 beanshell 代码的函数
    2. ctx - 是JMeterContext 类实例的快捷方式。有关所有可用方法,请参阅 JavaDoc
    3. getCurrentSampler() - 前面提到的 JMeterContext 类方法,它提供对当前采样器实例的访问
    4. getPortTCPSampler 类的方法,在您的情况下它将是 TCP 采样器

    所以 __Beanshell 函数执行脚本并将结果保存到 port 变量中,以后可以在当前线程组的任何地方访问该变量。

    对于 Beanshell PreProcessor(如果您仍然想使用它)相关代码将如下所示:

    int port = sampler.getPort();
    vars.put("port", String.valueOf(port));
    

    有关 Apache JMeter 中的 Beanshell 脚本的全面信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。 `

    【讨论】:

    • 工作就像一个魅力......非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多