JMeter JSR223预处理程序无法解析带有占位符的JSON

c9qzyr3d  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(259)

在一个JMeter测试计划中,我需要做以下事情......
Generate TID将一个或多或少的随机数放入vars.tid
Calculate checksum预处理器计算一个校验和,并将其放入vars.checksum中。但是,该校验和取决于tidSend request中的JSON有效负载的其他数据(var1var2)。

JSON正文示例

  1. {
  2. "event": {
  3. "checksum": "${checksum}",
  4. "tid": ${tid},
  5. },
  6. "data": {
  7. "var1": "value1",
  8. "var2": "value2
  9. }
  10. }

一米八纳一米

  1. import groovy.json.JsonSlurper
  2. def jsonSlurper = new JsonSlurper()
  3. def requestBodyString = sampler.getArguments().getArgument(0).getValue();
  4. def json = jsonSlurper.parseText(requestBodyString)
  5. def tid = vars.get('tid')
  6. def checkusm = calculateChecksum(tid, json.var1, json.var2)
  7. vars.put('checksum', checksum)

现在,由于"tid": ${tid}不是有效的JSON,JsonSluper似乎没有实际解析内容。因此,在发送请求之前,checksum不会被替换。
你有什么办法解决这个问题吗?

mftmpeh8

mftmpeh81#

如果您需要解析“占位符”并将其替换为相关变量值,则需要将__eval()函数与__FileToString()函数结合使用,并将结果传递给JsonSlurper:

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

相关问题