我有几个要通过属性验证的用户定义变量。
我可以使用jsr223采样器来验证它们,但我不想复制用户定义变量中已经设置的所有名称。
是否有一些编程的方法可以通过采样器或上下文变量来获取已声明的用户定义变量?
答案 0 :(得分:1)
JMeterVariables类实例有vars
的简写,其中包含所有JMeter变量(包括您通过User Defined Variables类设置的变量)。
查看Top 8 JMeter Java Classes You Should Be Using with Groovy文章,以获取有关vars
以及JSR223测试元素可用的其他JMeter API速记的更多信息。
但是,通过这种方式,您将获得所有JMeter变量,包括pre-defined ones
如果您只想验证在“用户定义的变量”配置元素中定义的变量,则可以使用Reflection来技巧:
import org.apache.jmeter.config.Arguments
import org.apache.jorphan.collections.SearchByClass
def engine = engine = ctx.getEngine()
def test = engine.getClass().getDeclaredField('test')
test.setAccessible(true)
def testPlanTree = test.get(engine)
SearchByClass<Arguments> udvSearch = new SearchByClass<>(Arguments.class)
testPlanTree.traverse(udvSearch)
Collection<Arguments> udv = udvSearch.getSearchResults()
udv.each { arguments ->
0.upto(arguments.size() - 1, { rowNum ->
def arg = arguments.getArgument(rowNum)
log.info('Variable name = ' + arg.getName() + ', variable value = ' + arg.getValue())
})
}