Jmeter在Groovy中使用正则表达式来查找子字符串

时间:2018-06-13 12:29:29

标签: groovy jmeter

在Jmeter中我使用的是带有Groovy的JSR223PostProcessor,HTTP响应是一个类似这样的JSON Block:

`function changeGraphicVisibility() {
      polygonGraphic.visible = !polygonGraphic.visible;
      var spanElement = document.getElementById("visibility");
      spanElement.innerHTML = polygonGraphic.visible;
    }....`

我有兴趣搜索 - >

{
  "A1": 283,
  "XYZ": "123@192.168.12.12",
  "A3": "",
  "A4": {
  "A6": 1,
 }
}

我可能也可能没有那条线,注意*可以是任何东西 目前我正在这样做,它的工作原理:

"XYZ": "*@*",

但我喜欢更优雅的方式 - >

if (response.contains("@"))

我怎么能在Groovy中做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用find operator

def response = prev.responseDataAsString

if ( response =~ /"XYZ":\s*"\d*@.*"/ ) {
    println "found it!"
}

答案 1 :(得分:1)

我不认为你需要正则表达式,我宁愿建议使用JsonSlurper而只依赖XYZ属性存在,相关的Groovy代码将是这样的:

def xyz = new groovy.json.JsonSlurper().parse(prev.getResponseData()).XYZ
if (xyz == null) {
    log.info('XYZ string was not found')
}
else {
    log.info('XYZ value is: ' + xyz)
}
  • 如果字符串不存在,您将收到not found消息:

    JMeter Groovy JSON Not Found

    • 如果存在字符串,您将获得其值:

      JMeter Groovy JSON Found

更多信息: