BeanShell PreProcessor更新用户定义变量

时间:2013-11-22 16:59:36

标签: variables preprocessor jmeter beanshell

我对JMeter问题很新。

在测试脚本中,我有一个BeanShell PreProcessor元素,用于更新以前在“用户定义的变量”元素中定义的一些变量。

后者这些变量用于“Http请求”。但是,http请求中使用的值是默认值。

由于某些调试print();

,脚本似乎正在运行

我的问题是,是否有必要延迟脚本以确保BeanShell完成?

非常感谢您的关注

3 个答案:

答案 0 :(得分:2)

没有必要对Beanshell预处理器进行任何延迟,因为它在之前执行处理。我建议检查 jmeter.log 文件以查看是否存在任何脚本问题,因为Beanshell预处理器不会在任何地方报告错误,包括查看结果树监听器。

使用Beanshell脚本至少有两种方法可以确保一切正常:

  1. 变量替换逻辑后,将调试打印代码置于
  2. 之后
  3. 在HTTP请求中使用JMeter __Beahshell功能。如果没关系 - 查看结果树将演示beanhell生成的值。如果不是 - 该字段将为空白,并且相关错误将显示在日志中。
  4. 示例测试用例:

    给出以下测试计划结构:

    • 具有1个用户和1个循环的线程组
    • HTTP GET请求google.com,路径为/和参数q

    如果在beanshell函数之后提供参数“q”:

    ${__BeanShell(System.currentTimeMillis())}
    

    并查看“查看结果树”“请求”选项卡,您应该看到如下内容:

    GET http://www.google.com/?q=1385206045832
    

    如果您将功能更改为不正确的内容,例如:

    ${__BeanShell(Something.incorrect())}
    

    你会看到一个空白的请求。

    更改现有变量(或创建新的if变量不存在)的正确方法如下所示

    vars.put("variablename", "variablevalue");
    

    * 重要:* JMeter变量是Java字符串,如果您尝试将其他内容(日期,整数等)设置为JMeter变量,则需要以某种方式将其强制转换为字符串。

    示例:

    int i = 5;
    vars.put("int_i", String.valueOf(i));
    

    希望这有帮助。

答案 1 :(得分:0)

您可以更新“用户定义变量”的值。

  1. 您必须创建一个bean shell sampler
  2. vars.put(“user_defined_variable”,“newvalue”);
  3. @theINtoy做对了。

    http://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell

答案 2 :(得分:-2)

我也是jmeter的新手,但我知道“用户定义变量”中定义的变量是常量,所以你不能改变它们。我建议在预处理器或CSV数据集配置中使用“用户参数”。