繁体   English   中英

具有Groovy的Jmeter PostProcessor,并获取响应数据的内容

[英]Jmeter PostProcessor with Groovy and fetching content of response data

在JSR223 PostProcessor中,我使用此方法来获取响应数据:

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,
note 2542是可变的,每次和每次运行后都可以不同。

我试过了

json.find ("Voice133, id:(.+?),")

您的字符串不是有效的JSON,您可以使用任何在线JSON验证器自己检查它,因此您将无法使用JsonSlurper ,而必须使用正则表达式。

在Groovy中,您可以使用=~ - Find运算符以便能够提取所需的值,示例代码如下所示:

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))
}

演示:

JMeter Groovy正则表达式

更多信息: Apache Groovy-为什么以及如何使用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM