Jmeter 无法替换 HTTP 请求正文数据中的正则表达式引用

Jmeter cannot substitute regular expression reference in Body Data of HTTP Request

我想在 json 响应中提取 ProductIdentifier 的值,如下所示:

Reference Name: ProductToken
Regular Expression: "ProductIdentifier":" (.+?)"
Template $
Match No. 1

然后 ProductToken 引用将用于请求的负载 (json) 以进行验证。

有教程和视频介绍如何替换参考名称,如下例所示: jmeter-video-tutorial-error-checking-and-dynamic

目前引用名称${ProductToken}在请求中没有被替换为它的值(取自之前的响应),它被识别为引用名称的纯文本。

{"order":{"Token":null,"ProductIdentifier":"${ProductToken}","OrderToken":null,"Products": ...

request中有30多个变量,每次都直接写成参数而不是直接在Body Data中进行替换,太浪费时间了。

无论如何我找不到在 HTTP 请求的正文数据中使用此引用名称。任何建议将不胜感激。

谢谢。

目前处理 JSON 响应最舒适的方式似乎是自定义 JSON utils for jmeter (JSON Path Assertion, JSON Path Extractor, JSON Formatter) which are also part of JMeter Plugins 并且应该与 Blazemeter 一起正常工作。

使用 JSON 路径代替正则表达式提取器可以帮助您避免因 json 格式问题导致的处理错误。

如果 ProductIdentifier 外观在响应中是独一无二的,那么在这种特殊情况下,以下应该可以正常工作: <pre> { "order":{ "Token":null, "ProductIdentifier":"c1e8e382-771e-4fee-b7c2-0a24afe798df", "OrderToken":null, "Products":[ "one", "two", "three" ] } } </pre>

. . .
HTTP Request
    jp@gc - JSON Path Extractor
    Name: productToken
    JSON path: $.order.ProductIdentifier
HTTP Request
Body Data:
    {
       "order":{
          "Token":null,
          "ProductIdentifier":"${productToken}",
          "OrderToken":null,
          "Products":[
             "one",
             "two",
             "three"
          ]
       }
    }
. . .