从安装线程组(jmeter)获取线程组中的线程数

时间:2017-04-19 19:17:23

标签: jmeter

我有一个JMeter测试计划,它执行一次简单的操作。

我遇到的问题是我的测试设置需要知道线程组将拥有多少个线程。为了使事情更清楚,这里是测试计划的简单表示:

setUp Thread Group
  needs to know the number of threads in the below thread group
Thread Group
  The number of threads for this thread group is determined via the "Number of Threads (users)" Thread Property.

我可以动态地从线程组中获取线程数,但我无法找到从设置线程组中获取此数字的任何方法。

有什么想法吗?

理想情况下,我希望找到像${__groovy(ctx.getTestPlan().getThreadGroupByIndex(1).getNumThreads())}这样的东西,但我无法找到任何类似的东西。

要明确的是,我正在寻找在线程组属性中直接在JMeter中分配的线程数。这个问题与BlazeMeter完全无关,因此Get number of threads (defined via BlazeMeter) in a thread group from the setup thread group (jmeter)的副本

2 个答案:

答案 0 :(得分:1)

您可以尝试在测试计划中定义用户自定义变量,例如“Users_test”,并为其分配您要运行测试的虚拟用户数。

然后只需在线程组中使用该变量“线程数(用户):$ {Users_test},您就可以在setUp中执行相同操作。

答案 1 :(得分:0)

你不知道线程数的速度表明你的测试设计得很糟糕。

事实上,您已经在6小时之前就同一个问题得到了答案,这表明您不愿意学习并希望社区为您解决问题。

以防万一我会重复使用更简单的词语:

  • 如果你需要克服JMeter限制,你必须去编写脚本
  • 推荐的方法是使用JSR223 Test ElementsGroovy language
  • JMeter API参考位于https://jmeter.apache.org/api/
  • Check out Groovy Is the New Black有关将Groovy与JMeter API一起使用的示例
  • 的文章
  • 获取所有线程组的线程数的示例代码:

    import org.apache.jmeter.engine.StandardJMeterEngine
    import org.apache.jmeter.threads.ThreadGroup
    import org.apache.jorphan.collections.HashTree
    import org.apache.jorphan.collections.SearchByClass
    import java.lang.reflect.Field
    
    StandardJMeterEngine engine = ctx.getEngine()
    Field test = engine.getClass().getDeclaredField("test")
    test.setAccessible(true)
    HashTree testPlanTree = (HashTree) test.get(engine)
    
    SearchByClass<ThreadGroup> threadGroupSearch = new SearchByClass<>(ThreadGroup.class)
    testPlanTree.traverse(threadGroupSearch)
    Collection<ThreadGroup> threadGroups = threadGroupSearch.getSearchResults()
    threadGroups.each { 
        log.info("Thread Group: " + it.getName() + "; Number of threads: " + it.getNumThreads())
    } 
    

    演示:

    JMeter Groovy get thread groups number