JMeter中的多个条件是JSON断言

JMeter中的多个条件是JSON断言,jmeter,Jmeter,对于我的http请求调用,我得到以下JSON响应 { "id": "29133", "status": { "overall": "IN_PROGRESS", "subStatus": "BATCH_GENERATION_STARTED", "failureDetails":

对于我的http请求调用,我得到以下JSON响应

{
    "id": "29133",
    "status": {
        "overall": "IN_PROGRESS",
        "subStatus": "BATCH_GENERATION_STARTED",
        "failureDetails": null,
        "statusHistory": [
            {
                "overall": "OPENED",
                "subStatus": null,
                "startTimestamp": "2021-05-24T06:54:39.2391116",
                "endTimestamp": null
            },
            {
                "overall": "UPLOAD_COMPLETE",
                "subStatus": null,
                "startTimestamp": "2021-05-24T06:54:39.2391116",
                "endTimestamp": null
            },
            {
                "overall": "IN_PROGRESS",
                "subStatus": "CSV_VALIDATION_STARTED",
                "startTimestamp": "2021-05-24T06:54:39.2391116",
                "endTimestamp": null
            },
            {
                "overall": "IN_PROGRESS",
                "subStatus": "CSV_VALIDATION_COMPLETE",
                "startTimestamp": "2021-05-24T06:54:39.2391116",
                "endTimestamp": null
            }
        ]
    },
    "initiatedBy": "bulk_admin_user",
    "product": "TEST",
    "entity": "STE",
    "operation": "ADDJ_JOB",
    "startTimestamp": "2021-05-24T06:54:39.2391116",
    "endTimestamp": null,
    "file": {
        "totalRecords": 0,
        "totalFailedRecords": 0,
        "totalSuccessRecords": 0,
        "totalInProgressRecords": 0,
        "numBatches": 0,
        "maxBatchSize": 1000,
        "batches": []
    },
    "results": {
        "successFileAvailable": false,
        "failureFileAvailable": false
    },
    "actionsAvailable": {
        "dataUploadAllowed": false,
        "abortJob": false,
        "restartJob": false,
        "actionHistory": [
            {
                "initatedTimestamp": "2021-05-24T06:54:41.9525781",
                "actionType": "UPLOAD_COMPLETE",
                "initiatedBy": "bulk_admin_user"
            }
        ]
    }
}
在状态部分中,我想验证
总体
部分,我希望有两个值
“进行中”和“上传完成”

我想在JMeter中使用JSON断言进行验证,我使用了以下内容:,


不知何故,上面的条件不起作用,我在这里遗漏了什么?

为什么您是
JSON
断言,为什么不使用以下脚本创建JSR223断言

import groovy.json.JsonSlurper;

def failureMessage = "";
def jsonResponse = null;

JsonSlurper JSON = new JsonSlurper ();

try {
    jsonResponse = JSON.parseText(prev.getResponseDataAsString());
    status = jsonResponse.status.overall            
    } 
catch (Exception e) {
    failureMessage += "Invalid JSON.\n"
}
        if (status.contains('IN_PROGRESS') || status.contains('UPLOAD_COMPLETE')){
                AssertionResult.setFailure(false);
            }
            else {
                AssertionResult.setFailure(true);
                AssertionResult.setFailureMessage(failureMessage);
            }

这将涵盖您的提问?

为什么使用JSON断言,为什么不使用以下脚本使用JSR223断言

import groovy.json.JsonSlurper;

def failureMessage = "";
def jsonResponse = null;

JsonSlurper JSON = new JsonSlurper ();

try {
    jsonResponse = JSON.parseText(prev.getResponseDataAsString());
    status = jsonResponse.status.overall            
    } 
catch (Exception e) {
    failureMessage += "Invalid JSON.\n"
}
        if (status.contains('IN_PROGRESS') || status.contains('UPLOAD_COMPLETE')){
                AssertionResult.setFailure(false);
            }
            else {
                AssertionResult.setFailure(true);
                AssertionResult.setFailureMessage(failureMessage);
            }
这能满足你的要求吗

  • 更改JSON路径表达式以用于捕获所有
    状态
    属性值

    $.status..overall
    
  • 您的不太正确,如果您希望匹配同时包含
    正在进行中
    上载完成
    ,则应将其修改为以下内容:

    .*IN_PROGRESS.*UPLOAD_COMPLETE.*
    
  • 更多信息:

  • 更改JSON路径表达式以用于捕获所有
    状态
    属性值

    $.status..overall
    
  • 您的不太正确,如果您希望匹配同时包含
    正在进行中
    上载完成
    ,则应将其修改为以下内容:

    .*IN_PROGRESS.*UPLOAD_COMPLETE.*
    

  • 更多信息:

    像这样,又脆又小像这样,又脆又小