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

时间:2018-06-17 00:37:55

标签: groovy jmeter

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

class First:
    def __init__(self):
        self.foo = 'foo'
        super().__init__()


class Second:
    def __init__(self):
        self.bar = 'bar'
        super().__init__()


class Third(First,Second):
    def __init__(self):
        super().__init__()
        print(self.__dict__)

Third() # prints: {'foo': 'foo', 'bar': 'bar'}

这是我的json输出的片段就像​​这样

def json = new JsonSlurper().parseText(response)

文件夹:\ Voice133,id:2542,信息:[[xPath:/ TestCases / TestCase [001],

如您所见,此回复包含两件我感兴趣的内容:

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], 

我只需要获取此行的ID值 - >文件夹:\ Voice133,id:2542,
注释2542是可变的,每次运行后都可以不同。

我试过

folder:\A\abc\a1, id:84,
folder:\Voice133, id:2542,

1 个答案:

答案 0 :(得分:0)

您的字符串不是有效的JSON,您可以使用任何online JSON validator自行查看,因此您将无法使用JsonSlurper,而是必须使用正则表达式。

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

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 Regular Expression

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