如何在BeanShell中验证json响应,并在响应与jmeter中预期的不一致的情况下执行一些操作?

如何在BeanShell中验证json响应,并在响应与jmeter中预期的不一致的情况下执行一些操作?,jmeter,beanshell,Jmeter,Beanshell,我想在jmeter中提取json响应,如果响应不符合预期,我需要将其打印到csv文件中 我尝试使用contains方法检查响应是否包含预期的关键字,但它似乎不起作用。我还有别的办法吗 此处的示例代码: log.info(ctx.getPreviousResult().getResponseDataAsString()); r = ctx.getPreviousResult().getResponseCode(); d = ctx.getPreviousResult().getResponse

我想在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"
}
我正在检查关键字“valid”

但它似乎不起作用

短暂性脑缺血发作

  • ,您应该转而使用JSR223测试元素和Groovy语言。主要原因是这样

  • 因此,您可以轻松提取
    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");  
    }
    
    演示:

  • 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");  
    }