【问题标题】:Is it possible to extract a UUID from a response in Jmeter so I can use for a subsequent request是否可以从 Jmeter 的响应中提取 UUID,以便我可以用于后续请求
【发布时间】:2020-09-12 20:46:57
【问题描述】:

我的场景:

  1. 我正在执行一个生成 rateID(UUID) 的 POST 请求
  2. 使用此 rateID 执行另一个 POST 请求
  3. 我还在正文中使用 JSON 提取器提取的其他 2 个字段,但不知何故,这个 rateID 只是按原样传递

来自第一个 POST 请求的示例响应正文

{
        "source": "USD",
        "target": "MXN",
        "RateId": "0f4a78a2d2b34849882f0154b9249345",
        "exchangeRate": 21.3909440000,
        "rateExpiry": "2020-09-14 20:30:20",
        "providerId": 2,
        "providerNm": "ZIGA-STATIC",
        "rawRate": 21.3376000000,
        "markupValue": 0.00250
 }

来自第二个 POST 请求的示例请求正文

[{

  "source":"${source}",
  "target":"${target}",
  "RateId":"${RateId}",
  "buyAmount":100,
  "transactionSettlementDate":"2020-07-28",
  "transactionId":"${GUID}",
  "transactionTimestamp":"2020-07-28T17:35:17.866Z"

}]

出现错误

{"errorMessages":["Transaction #0: [invalid RateId ${RateId}]"]}

不能像那样使用 UUID 吗?我什至尝试使用正则表达式来提取 UUID ([a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[ a-f0-9]{12}) 但仍然没有运气

向社区Jmeter专家求助,请帮忙

【问题讨论】:

    标签: api jmeter jmeter-3.2


    【解决方案1】:

    从您显示的内容来看,这 4 个字段的提取似乎不起作用。

    您需要在第一个 HTTP 请求中添加 3 个 JSON 提取器:

    第一个带有 json 路径表达式的源变量:

    第二个目标变量:

    RateId 的最后一个

    对于 Guid,不清楚它是否只是 RateId 的值(为什么创建变量 Guid 而不是只使用 ${RateId} 以及在这种情况下如何填充?)。

    如果只是一个随机的uuid,可以使用函数UUID:

    ${__UUID()}

    否则请澄清它的来源。

    见:

    【讨论】:

      【解决方案2】:

      您可以使用JSR223 PostProcessor 和以下 Groovy 代码一次提取 3 个值:

      def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
      
      vars.put('source', response.source)
      vars.put('target', response.target)
      vars.put('RateId', response.RateId)
      

      演示:

      更多信息:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 2012-10-04
        相关资源
        最近更新 更多