Jmeter 如何获取测试计划中的线程组数

Jmeter 如何获取测试计划中的线程组数,jmeter,Jmeter,我有一个小脚本,它有自己的属性和一个线程组。有时,我需要将这个测试脚本合并到一个更大的测试计划中,该计划包含多个线程组。我需要一种方法来说明是否只有一个线程组,然后应用这些用户定义的变量。有什么想法吗?我想我应该添加一个If控制器,但我似乎找不到我应该设置的条件。您可以添加关于您的, 例如,如果您的小脚本是1.jmx,请检查 ${jexl3( "1.jmx" == "${__TestPlanName}")} 此外,您还可以在测试计划中添加一个变量,名为amILong,值为true,并检查它是

我有一个小脚本,它有自己的属性和一个线程组。有时,我需要将这个测试脚本合并到一个更大的测试计划中,该计划包含多个线程组。我需要一种方法来说明是否只有一个线程组,然后应用这些用户定义的变量。有什么想法吗?我想我应该添加一个If控制器,但我似乎找不到我应该设置的条件。

您可以添加关于您的, 例如,如果您的小脚本是1.jmx,请检查

 ${jexl3( "1.jmx" == "${__TestPlanName}")}

此外,您还可以在测试计划中添加一个变量,名为
amILong
,值为true,并检查它是否存在。

实际上,您可以在测试计划中获得线程组的数量,但它需要一些脚本编写(假设使用)

  • 将某处添加到您的测试计划中
  • 确保在“语言”下拉列表中选择了
    groovy
    language
  • 将以下代码放入“脚本”区域:

    import org.apache.jmeter.engine.StandardJMeterEngine
    导入org.apache.jmeter.threads.ThreadGroup
    导入org.apache.jorphan.collections.HashTree
    导入org.apache.jorphan.collections.SearchByClass
    导入java.lang.reflect.Field
    def engine=ctx.getEngine()
    def test=engine.getClass().getDeclaredField(“测试”)
    test.setAccessible(true)
    def testPlanTree=(HashTree)test.get(引擎)
    def threadGroupSearch=newsearchbyclass(ThreadGroup.class)
    testPlanTree.traverse(threadGroupSearch)
    def threadGroups=threadGroupSearch.getSearchResults().size()
    log.info('在测试计划中检测到'+线程组+'线程组')
    如果(线程组==1){
    道具放置('foo','bar'))
    }
    否则{
    道具放置('foo','baz'))
    }
    
  • 如果测试计划中只有一个线程组,则上述代码将创建
    foo
    JMeter属性,其值为
    bar
    ,在其他情况下,属性值将为
    baz
    。如果需要,即在If控制器中,您可以通过as
    ${{uu P(foo,)}
    引用属性

    演示:


    更多信息:

    我不知道为什么这两个答案都被否决了。它们看起来都是很好的答案,我现在就试试。非常感谢。我只能将投票改为0票或-1票。怪人你只能投一次票,如果有人投了-1票,那么你可以投+1票,投0票。事实上,我不确定我想做的事情是否可行。似乎If控制器中的用户定义变量元素不管If条件如何都会运行…基本上,如果脚本单独运行,我需要设置某些变量,但是如果它合并并在更大的脚本中运行,它应该使用更大的脚本变量…嗯,我被难倒了
    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
    
    def engine = ctx.getEngine()
    def test = engine.getClass().getDeclaredField("test")
    test.setAccessible(true)
    def testPlanTree = (HashTree) test.get(engine)
    
    def threadGroupSearch = new SearchByClass<>(ThreadGroup.class)
    testPlanTree.traverse(threadGroupSearch)
    def threadGroups = threadGroupSearch.getSearchResults().size()
    
    log.info('Detected ' + threadGroups + ' Thread Groups in the Test Plan')
    
    if (threadGroups == 1) {
        props.put('foo', 'bar')
    }
    else {
        props.put('foo', 'baz')
    }