线程

时间:2017-12-14 03:41:27

标签: multithreading foreach controller jmeter

  

TestPlan线程组HTTP请求1 - >正则表达式提取器 - 返回10个结果 - URL - 单线程   ForEach Controller - 使用提取器中的变量 - 成功循环上面的结果HTTP Request2 - >正则表达式提取器 - 返回10个结果   以上是1线程

我希望在不同的线程下使用ForEach Controller - 运行多个therads并使用从1个线程HTTP Sampler中提取的URL - 我试图使用这两种方法 https://www.blazemeter.com/blog/knit-one-pearl-two-how-use-variables-different-thread-groups How do I pass a variable from one Thread Group to another in JMeter  但不知怎的,现在管理它的工作 请帮忙

1 个答案:

答案 0 :(得分:0)

ForEach Controller不能与JMeter属性一起使用,它只能用于JMeter变量,所以如果你想在不同的Thread Groups之间传递它们,你需要做一些脚本。

  1. 在正则表达式提取器后添加JSR223 PostProcessor并将以下代码放入“脚本”区域

    vars.entrySet().each { var ->
        if (var.getKey().startsWith('foo')) {
            props.put(var.getKey(), var.getValue())
        }
    }
    

    foo替换为正则表达式提取器中的Reference Name。上面的代码会将名称以foo开头的所有变量转换为相关的JMeter属性

  2. Test Action采样器添加到第二个线程组(您不需要测量属性到变量转换的时间,是吗)
  3. JSR223 PreProcessor添加为“测试操作”采样器的子项
  4. 将以下代码放入“脚本”区域

    props.entrySet().each {prop ->
        if (prop.getKey().startsWith('foo')){
            vars.put(prop.getKey(),prop.getValue())
        }
    }
    

    上面的代码将JMeter属性转换为JMeter变量,这样您就可以在第二个Thread Group的ForEach Controller中使用它们。再次,将此foo替换为您自己变量的引用名称。

  5. 有关在JMeter测试中使用Groovy脚本的更多信息,请参阅Apache Groovy - Why and How You Should Use It文章