如何在bean外壳中验证json响应并执行一些操作,以防响应不符合jmeter中的预期?

时间:2019-02-05 22:17:15

标签: jmeter beanshell

我想在jmeter中提取json响应,如果响应不符合预期,则需要将其打印到csv文件中。

我尝试使用contains方法检查响应是否包含预期的关键字,但似乎不起作用。还有其他方法可以做到吗?

此处的示例代码:

log.info(ctx.getPreviousResult().getResponseDataAsString());

r = ctx.getPreviousResult().getResponseCode();

d = ctx.getPreviousResult().getResponseDataAsString();

if(!d.contains("valid")){

p.println(r +","+ vars.get("email") +",");

}

这是我的json响应

{
     "isBlueLinkServicePinValid": "valid"
}

我正在检查关键字“有效”

if(!d.contains("valid"))

但这似乎不起作用吗?

TIA

1 个答案:

答案 0 :(得分:1)

  1. Since JMeter 3.1 it is not recommended to use Beanshell for scripting,您应该改为使用JSR223测试元素和Groovy语言。主要原因是Groovy has much better performance than Beanshell这样做了。

  2. Groovy has built-in JSON support,因此您可以轻松提取isBlueLinkServicePinValid属性值:

    String response = prev.getResponseDataAsString();
    log.info("Response: " + response)
    String valid = new groovy.json.JsonSlurper().parseText(response).isBlueLinkServicePinValid
    log.info("Valid: " + valid);
    if (valid.equals("valid")) {
        log.info("Do something");
    }
    else {
        log.info("Do something else");  
    }
    

    演示:

    enter image description here