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

时间:2018-01-09 22:17:43

标签: jmeter

我有一个小脚本,它有自己的属性和一个线程组。有时我需要将此测试脚本合并到一个具有多个线程组的更大的测试计划中。我需要一种方法来说明是否只有1个线程组然后应用这些用户定义的变量。有任何想法吗?我想我会添加一个If Controller,但我似乎无法找到我会放置的条件。

2 个答案:

答案 0 :(得分:1)

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

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

此外,您可以在测试计划中添加一个具有真值的amILong变量,并检查它是否存在。

答案 1 :(得分:0)

实际上,你可以在测试计划中获得线程组的数量,但是假设使用JMeter API则需要一些脚本。

  1. JSR223 Sampler添加到您的测试计划
  2. 确保在&#34;语言&#34;中选择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') } 种语言。下拉
  3. 将以下代码放入&#34;脚本&#34;面积:

    foo
  4. 如果测试计划中只有一个线程组,则上面的代码将创建bar JMeter属性,其值为baz,在其他情况下,属性值将为{{ 1}}。您可以通过__P() function将商家称为${__P(foo,)},如果需要,即在If控制器中。

    演示:

    JMeter Count Number of Thread Groups

    更多信息:Apache Groovy - Why and How You Should Use It