由于先前多响应模型中的相同 json 路径导致的 JSR223 后处理器错误日志
JSR223 PostProcessor error logs due to same json path in previous multiple response model
尽管脚本 运行 成功并且 Jmeter 步骤没有问题,但我在 JSR223 PostProcessor
的日志中看到了以下错误。
Caused by: java.lang.NullPointerException: Cannot get property 'result' on null object
我的 JSR223 后处理器 - groovy 3.0.7 脚本如下所示:
import groovy.json.JsonSlurper;
String json = prev.getResponseDataAsString();
def root = new JsonSlurper().parseText(json);
def C_accountNumber = root.myAccount.result[0].accountNumber;
vars.put("C_accountNumber", C_accountNumber);
上面脚本上面的响应
{
"myAccount": {
"result": [
{
"accountNumber": "Something",
"accountAddress": "Something",
}
]
}
}
但是,我注意到的是,在前面的多个步骤响应中的上述脚本之前,我还看到了下面的路径。 (完全相同的路径 myAccount.result[0]
)
所以我猜这是导致问题的原因,因为作为之前的回复之一,我看不到 accountNumber
尽管有 myAccount.result[0]
.
例如
{
"myAccount": {
"result": [
{
"country": "Something",
"address": "Something",
}
]
}
}
因为 groovy 脚本中的这一部分 String json = prev.getResponseDataAsString();
经历了所有以前的响应,但不仅仅是之前。我的理解正确吗?
有没有办法消除日志中的这些错误?
您的 post 处理器应定义为 HTTP 请求的子级
JMeter Post-Processor 在范围内执行,对于特定的 HTTP 请求将其添加为请求的子项
Post-Processor executes some action after a Sampler Request has been made. If a Post-Processor is attached to a Sampler element, then it will execute just after that sampler element runs.
如果您输入 PostProcessor at the same level as several Samplers - 它将应用于 所有
因此,如果您只想在某个采样器之后执行后处理器 - 您需要使后处理器成为特定采样器的子级:
尽管脚本 运行 成功并且 Jmeter 步骤没有问题,但我在 JSR223 PostProcessor
的日志中看到了以下错误。
Caused by: java.lang.NullPointerException: Cannot get property 'result' on null object
我的 JSR223 后处理器 - groovy 3.0.7 脚本如下所示:
import groovy.json.JsonSlurper;
String json = prev.getResponseDataAsString();
def root = new JsonSlurper().parseText(json);
def C_accountNumber = root.myAccount.result[0].accountNumber;
vars.put("C_accountNumber", C_accountNumber);
上面脚本上面的响应
{
"myAccount": {
"result": [
{
"accountNumber": "Something",
"accountAddress": "Something",
}
]
}
}
但是,我注意到的是,在前面的多个步骤响应中的上述脚本之前,我还看到了下面的路径。 (完全相同的路径 myAccount.result[0]
)
所以我猜这是导致问题的原因,因为作为之前的回复之一,我看不到 accountNumber
尽管有 myAccount.result[0]
.
例如
{
"myAccount": {
"result": [
{
"country": "Something",
"address": "Something",
}
]
}
}
因为 groovy 脚本中的这一部分 String json = prev.getResponseDataAsString();
经历了所有以前的响应,但不仅仅是之前。我的理解正确吗?
有没有办法消除日志中的这些错误?
您的 post 处理器应定义为 HTTP 请求的子级
JMeter Post-Processor 在范围内执行,对于特定的 HTTP 请求将其添加为请求的子项
Post-Processor executes some action after a Sampler Request has been made. If a Post-Processor is attached to a Sampler element, then it will execute just after that sampler element runs.
如果您输入 PostProcessor at the same level as several Samplers - 它将应用于 所有
因此,如果您只想在某个采样器之后执行后处理器 - 您需要使后处理器成为特定采样器的子级: