使用beanshell预处理器存储Jmeter sampler属性值

时间:2014-12-06 04:49:57

标签: jmeter preprocessor beanshell

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

我已经为TCP sampler config中定义的TCP连接定义了'port'值,我需要这个值(TCPSampler.port = 3001)作为对服务器的请求的一部分。

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

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

高级感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

细分包括:

  1. __Beanshell函数,允许在脚本的任何位置执行任意beanhell代码
  2. ctx - 是JMeterContext类实例的快捷方式。有关所有可用方法,请参阅JavaDoc
  3. getCurrentSampler() - 前面提到的JMeterContext类方法,它提供对当前采样器实例的访问
  4. getPortTCPSampler类的方法,就像你的情况一样,它将是TCP sampler
  5. 因此__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指南。 `