我有一个小脚本,它有自己的属性和一个线程组。有时我需要将此测试脚本合并到一个具有多个线程组的更大的测试计划中。我需要一种方法来说明是否只有1个线程组然后应用这些用户定义的变量。有任何想法吗?我想我会添加一个If Controller,但我似乎无法找到我会放置的条件。
答案 0 :(得分:1)
您可以添加关于TestPlan的If条件, 例如,如果您的小脚本是1.jmx检查
${jexl3( "1.jmx" == "${__TestPlanName}")}
此外,您可以在测试计划中添加一个具有真值的amILong
变量,并检查它是否存在。
答案 1 :(得分:0)
实际上,你可以在测试计划中获得线程组的数量,但是假设使用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
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')
}
种语言。下拉将以下代码放入&#34;脚本&#34;面积:
foo
如果测试计划中只有一个线程组,则上面的代码将创建bar
JMeter属性,其值为baz
,在其他情况下,属性值将为{{ 1}}。您可以通过__P() function将商家称为${__P(foo,)}
,如果需要,即在If控制器中。
演示: