【问题标题】:Retrieve request data information's using JSR223 post processer in JMeter在 JMeter 中使用 JSR223 后处理器检索请求数据信息
【发布时间】:2020-09-01 00:07:35
【问题描述】:

我正在使用以下有效负载作为对我的一个测试服务器的发布请求,并且我想从有效负载中检索有效负载的大小。我正在使用 JSR223 后处理器来帮助获取这些信息

样本负载:

POST https://test.eventgrid.azure.net/api/events

POST data:
[
  {
    "subject": "audit",
    "id": "6aca5990-713b-47d1-be81-ed228bd81735",
    "eventType": "test.audit",
    "eventTime": "2020-08-31T05:02:02.462Z",
    "data": {
      "version": "1.0",
      "application": {
        "id": "PI0001",
        "name": "PLMAS",
        "component": {
          "id": "PLMAS01",
          "name": "SingleFileImporter",
          "type": "LogicApp"
        }
      },
      "audit": {
        "id": "168999807c4c46af908ce7a455a5e5eb",
        "timestamp": "2020-08-31T05:02:02.462Z",
        "type": "input",
        "entry": "File retrieved, validated and processed successfully",
        "message": {
          "headers": "J9SGinwTz0SSrEHrBrhMS3wquHlWu",
          "payload": "00=SfsDZ0LESTLZ6VpCmIEDT5nqOPqlwUJknCSIQuAIBM8wKj",
          "type": "csv",
          "protocol": ""
        },
        "keys": [
          {
            "name": "file-archive-location",
            "value": "Performance Test From Jmeter"
          }
        ]
      },
      "context": {
        "transactionId": "65174971-62d6-44da-9ecd-537b8d636464",
        "messageId": "04cb206c-25dd-4385-bed7-42f770c67cb8",
        "customerId": "FANSOI",
        "studyId": "FANSOI1234"
      }
    },
    "dataVersion": "1.0",
    "metadataVersion": "1"
  }
]

是否有任何默认方法,如sampler.getUrl() 获取请求 url 和 sampler.getArguments().getArgument(0).getValue() 获取请求正文。

【问题讨论】:

  • 你提到的uniqueid是什么?
  • JSON 负载中的第一个 iduniquid

标签: jmeter


【解决方案1】:

这应该做你想做的:

import java.util.List;
def size = prev.getBodySizeAsLong() + prev.getHeadersSize();
List<String> list = com.jayway.jsonpath.JsonPath.read( prev.getQueryString(), "$..id");
String uniqueId = list.get(0).toString();
log.info("size:{}, uniqueId:{}", size, uniqueId);

【讨论】:

  • 这里需要导入什么东西吗?因为我收到2020-08-31 20:54:24,577 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[EventGridTest 1-2,6,main] java.lang.NoSuchFieldError: defaultReader at com.jayway.jsonpath.spi.json.JsonSmartJsonProvider.&lt;init&gt;(JsonSmartJsonProvider.java:39) ~[json-path-2.4.0.jar:2.4.0]
【解决方案2】:

您可以使用相同的函数,但不要使用sampler,而是使用ctx.getCurrentSampler(),例如:

def data = ctx.getCurrentSampler().getArguments().getArgument(0).getValue()

def size = data.length()
def id = new groovy.json.JsonSlurper().parseText(data)[0].id

log.info('Size: ' + size)
log.info('Id: ' + id)

演示:

更多信息:

【讨论】:

    猜你喜欢
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    相关资源
    最近更新 更多