我有一个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)的副本
答案 0 :(得分:1)
您可以尝试在测试计划中定义用户自定义变量,例如“Users_test”,并为其分配您要运行测试的虚拟用户数。
然后只需在线程组中使用该变量“线程数(用户):$ {Users_test},您就可以在setUp中执行相同操作。
答案 1 :(得分:0)
你不知道线程数的速度表明你的测试设计得很糟糕。
事实上,您已经在6小时之前就同一个问题得到了答案,这表明您不愿意学习并希望社区为您解决问题。
以防万一我会重复使用更简单的词语:
获取所有线程组的线程数的示例代码:
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())
}
演示: