JMeter正则表达式包含下划线,行为不正常

时间:2017-05-03 16:31:28

标签: json regex jmeter load-testing

我正在使用处理提交和处理文件的应用程序,我正在尝试执行负载测试,其中不同的用户针对不同的文件并根据文件的状态执行不同的操作。此信息存在于从服务器发送的令人难以置信的长JSON响应中,该响应还包含有关所有文件的所有信息。然而,特别方便的是,我感兴趣的领域彼此足够接近以试图将它们关联起来。

我的方法如下:我需要提取每个文件的ID号以便定位它,我需要能够随机定位与特定状态相关的文件ID。我关心的响应结构如下:

{
    "responseObject":{
        "baseFilingRequests":{
            "^Value":[
            {"fields":"[values]"},
            {"fields":"[values]"},
            {
                "fields":"values",
                "referencedListings":"[value]",
                "id":"[value]",
                "referenceId":"[value]",
                "status":"[value]",
                "filingName":"[value]",
                "fields":"values",
            },
            {"fields":"[values]"},
            {"fields":"[values]"}
            ]
        }   
    }
}

所以我想我可以在RegEx中粘贴这个表达式并修改每个线程组的状态字段,这样每个线程组都会定位具有不同状态的文件(STATUS_APPROVED,STATUS_REJECTED等),然后只提取ID它找到的每个文件都使用如下表达式:

\"referencedListings\":null,\"id\":\"(.+?)\",\"referenceId\":\"\d\d\d\d\d\d\d\”,\"status\":\"STATUS[_]RECEIVED\",

但是,在尝试使用我指定的状态提取文件ID时,下划线会给我带来麻烦。有时它捕获不同的状态(捕获与STATUS_CANCELLED状态的归档相对应的归档ID,而不是我指定的STATUS_LOCKED),有时它会捕获ID,但它不会停止在那里提取;它尽可能地提取尽可能多的响应,在变量中插入这个大量字符串,然后尝试在后来的请求中将其用作文件ID,生成空指针异常。这种行为是不稳定的,看似随机,我不知道如何解决这个问题。

我尝试使用反斜杠转义字符,以及我能够想到的几乎所有其他语法,但这种行为仍然存在。毫无疑问,它是下划线,因为每当我只使用下划线之前的所有内容尝试表达式时,RegEx的行为一致且可预测。但我不能省略它,因为它是我需要检测的状态语法的一部分,所以我可以相应地过滤文件,当STATUS_PENDING_UNLOCK等状态包含两个下划线并且我需要能够检测两者时更是如此。 / p>

非常感谢任何有关此事的见解。

1 个答案:

答案 0 :(得分:0)

只是不要使用正则表达式来执行JSON数据的相关性(同样适用于XMLHTML

JMeter version 3.0开始,您可以JSON Extractor使用JSON Path language

执行关联