JMeter-如何验证响应json的特定元素是否存在

JMeter-如何验证响应json的特定元素是否存在,json,jmeter,Json,Jmeter,我有一个REST请求,其响应类似于: {“姓名”:[“彼得”、“约翰”、“莉莉”、“玛丽亚”]] 我需要一个资产,以验证元素的数量至少为3(在上述情况下为真,因为总共有4个元素),并且元素-“John”amnd“Maria”存在(我不关心其他值)。 我如何才能做到这一点?这是如何做到的: 提取到变量名称中: 使用“名称”变量: 作用于“名称”变量: 您可以使用。对于约翰“在场”的断言,设置如下 要断言精确计数,请像这样使用它 但是,您必须使用确切的姓名计数。所以更好的选择是使用JSR

我有一个REST请求,其响应类似于: {“姓名”:[“彼得”、“约翰”、“莉莉”、“玛丽亚”]] 我需要一个资产,以验证元素的数量至少为3(在上述情况下为真,因为总共有4个元素),并且元素-“John”amnd“Maria”存在(我不关心其他值)。 我如何才能做到这一点?

这是如何做到的:

提取到变量名称中:

使用“名称”变量:

作用于“名称”变量:

您可以使用。对于约翰“在场”的断言,设置如下

要断言精确计数,请像这样使用它


但是,您必须使用确切的姓名计数。所以更好的选择是使用JSR223断言。您可以选择使用Javascript作为以下代码的语言:

    json_body = JSON.parse(SampleResult.getResponseDataAsString());
    log.info("Finding JSON in response data: "+json_body);
    number_of_names=json_body.names.length;
    if(number_of_names<=3) {
        AssertionResult.setFailure(true);
        AssertionResult.setError(true);
        AssertionResult.setFailureMessage("Failed to match number of names. Expected number is 3, we got "+number_of_names);
        SampleResult.setSuccessful(false);
    }
json_body=json.parse(SampleResult.getResponseDataAsString());
log.info(“在响应数据中查找JSON:+JSON_body”);
名称的数量=json\u body.names.length;
如果(名称的数量)
  • 添加为返回JSON以上的请求的子级
  • 将以下代码放入“脚本”区域:

    def names=new groovy.json.JsonSlurper().parse(prev.getResponseData()).names
    if(names.size()<3 | | |!names.contains('John')| |!names.contains('Maria')){
    AssertionResult.setFailure(true)
    }
    
  • 如果数组大小小于3或不包含提到的名称,则断言将使采样器失败

    更多信息:

    import groovy.json.JsonSlurper;
    
    def jsonSlurper = new JsonSlurper()
    def json_body = jsonSlurper.parseText(SampleResult.getResponseDataAsString())
    log.info("Finding JSON in response data: $json_body");
    def json_names=json_body.names;
    def number_of_names=json_names.size();
    
    if(number_of_names <= 4) {
        AssertionResult.setFailure(true);
        AssertionResult.setError(true);
        AssertionResult.setFailureMessage("Failed to match number of names. Expected number is 4, we got "+number_of_names);
        SampleResult.setSuccessful(false);
    }
    
    if(! json_names.contains('John')) {
        AssertionResult.setFailure(true);
        AssertionResult.setError(true);
        AssertionResult.setFailureMessage("Failed to find John in names.");
        SampleResult.setSuccessful(false);
    }
    
    def names = new groovy.json.JsonSlurper().parse(prev.getResponseData()).names
    
    if (names.size() < 3 || !names.contains('John') || !names.contains('Maria')) {
        AssertionResult.setFailure(true)
    }