Jmeter - 如何组合变量名称和放大器计数器()

时间:2016-05-18 13:55:59

标签: variables jmeter counter

我遇到了以下问题:

enter image description here

我确实认为ProductId变量被赋予了第一个值,然后在我引用${productId}时只使用了该值。

我试图在RegexExtractor中将${__counter()}应用于引用名称, 但是BeanShellAssertion无法设置属性。

我应该如何正确地解决这个问题呢?

2 个答案:

答案 0 :(得分:3)

您可以使用__V()函数组合2个变量。

即。如果你有两个变量,如:

  • productId
  • counter

并且想评估ie ${productId_1}${productId_2}

应该如此简单:

${__V(productId${counter})}

相同的方法适用于__counter()函数:

${__V(productId_${__counter(,)})}

演示:

V function demo

有关上述和其他功能的全面信息,请参阅How to Use JMeter Functions帖子系列

答案 1 :(得分:1)

ProdGroup

  1. 请将产品ID属性存储为prod_id_1,prod_id_2,... prod_id_n或根据您的方便
  2. 怎么做到?

    在后处理器“参数”部分使用$ {__ counter(FALSE,)}并在脚本部分尝试获取String counter = arg[0]并将其转换为整数并将其存储到脚本变量默认为arg [0] value是String

    int c= arg[0] as Integer //这是以你的方式转换为int

    的groovystyle检查

    现在props.put("prod_id_"+c,"extractedfrom_response")

    BID:

    1. 在您的出价组中添加用户定义的变量部分添加变量 “prod_id”和值为空
    2. 使用相同的计数器1定义计数器启动并给出计数器参考名称[如果您的产品组中的计数器值为0,那么它也必须从零开始]

    3. 脚本采样器将所有道具转换为变量

      Enumeration e = props.propertyNames();
      
      while (e.hasMoreElements()) {
          String propertyName = e.nextElement().toString();
      
          if (propertyName.startsWith("prod_id_")) {
              vars.put(propertyName, props.getProperty(propertyName));
          }
      }
      

      使用此功能,您已将属性转换为名为prod_id_1的变量... ...到... prod_id_n

    4. 在http sampler用户参考中,$ {__ V(prod_id _ $ {步骤2中的反引用}}}将完成您的工作

    5. 对于每个线程,计数器将默认递增

      用于调试的采样器标签中的

      user $ {__ threadNum}或$ {counter reference name}。

      希望这会有所帮助。如果还有问题,请告诉我们。