带有Groovy和获取响应数据内容的Jmeter后处理器
在JSR223后处理器中,我使用此方法获取响应数据:带有Groovy和获取响应数据内容的Jmeter后处理器,groovy,jmeter,Groovy,Jmeter,在JSR223后处理器中,我使用此方法获取响应数据: def json = new JsonSlurper().parseText(response) 下面是我的json输出的一个片段,如下所示 XmlItemResult:[[xPath:/Blocks/Block[001], name:abc, folder:\A\abc\a1, id:84, information:[[xPath:/Blocks/Block[001], result:Block number 1: abc], [xPat
def json = new JsonSlurper().parseText(response)
下面是我的json输出的一个片段,如下所示
XmlItemResult:[[xPath:/Blocks/Block[001], name:abc, folder:\A\abc\a1, id:84, information:[[xPath:/Blocks/Block[001], result:Block number 1: abc], [xPath:/Blocks/Block[001]/Steps/CallSteps/Step[001], result:Call step StepNo 1],
文件夹:\Voice133,id:2542,信息:[[xPath:/TestCases/TestCase[001]
正如你所看到的,这个回答包含了我感兴趣的两件事:
folder:\A\abc\a1, id:84,
folder:\Voice133, id:2542,
我只需要获取此行-->文件夹的id值:\Voice133,id:2542,注2542是可变的,每次运行和每次运行后都可能不同 我试过了
json.find ("Voice133, id:(.+?),")
你的字符串不是一个有效的JSON,你可以自己用any来检查,因此你不能使用,你只能用正则表达式 在Groovy中,您可以使用
=~
-为了能够提取所需的值,示例代码如下:
def response = 'XmlItemResult:[[xPath:/Blocks/Block[001], name:abc, folder:\\A\\abc\\a1, id:84,' +
' information:[[xPath:/Blocks/Block[001], result:Block number 1: abc],' +
' [xPath:/Blocks/Block[001]/Steps/CallSteps/Step[001], result:Call step StepNo 1], '
def matcher = (response =~ 'folder:\\\\A\\\\abc\\\\a1, id:(\\d+),')
if (matcher.find()) {
log.info('Folder ID = ' + matcher.group(1))
}
演示:
更多信息:您能以最简单的形式共享您的json文件吗?我会给您一个片段以获得结果。注意:json slurper将文本或阅读器内容解析为列表和地图的数据结构。因此,您可以像访问地图或列表一样访问它们。在您的情况下,它将是一个地图。要使用json slurper,string必须是有效的json。如果您的响应具有特定模式,您可能需要使用正则表达式提取器。