【问题标题】:JMeter JSR223 preprocessor cannot parse JSON with placeholderJMeter JSR223 预处理器无法解析带有占位符的 JSON
【发布时间】:2022-07-05 15:59:54
【问题描述】:

在 JMeter 测试计划中,我需要执行以下操作...

Generate TID 将一个或多或少的随机数放入vars.tid

Calculate checksum 预处理器计算一个校验和,并放入vars.checksum。但是,此校验和取决于 tid 以及来自 Send request 中 JSON 有效负载的更多数据(var1var2)。

JSON 正文示例

{
  "event": {
    "checksum": "${checksum}",
    "tid": ${tid},
  },
  "data": {
    "var1": "value1",
    "var2": "value2
  }
}

Calculate checksum

import groovy.json.JsonSlurper
 
def jsonSlurper = new JsonSlurper()

def requestBodyString = sampler.getArguments().getArgument(0).getValue();
def json = jsonSlurper.parseText(requestBodyString)

def tid = vars.get('tid')
def checkusm = calculateChecksum(tid, json.var1, json.var2)

vars.put('checksum', checksum)

现在,JsonSluper 似乎没有真正解析内容,因为 "tid": ${tid} 不是有效的 JSON。因此,checksum 在发送请求之前不会被替换。

您对如何解决这个问题有任何想法吗?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    如果您需要解析“占位符”并将它们替换为您需要结合使用__eval() function__FileToString() function 的相关变量值并将结果传递给JsonSlurper:

    有关 JMeter 函数概念的更多信息:Apache JMeter Functions - An Introduction

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多