当前位置: 首页 > 知识库问答 >
问题:

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

阎涵忍
2023-03-14

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

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

那么ProductToken引用将用于请求的有效负载(json)中进行验证。

下面有一些教程和视频来描述如何替换引用名称,例如:jmeter-video-tutorial-error-checking-and-dynamic

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

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

请求中有30多个变量,每次直接在体数据中进行替换,而不是将其作为参数写入体数据中进行替换,很浪费时间。

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

多谢了。

共有1个答案

方梓
2023-03-14

目前处理JSON响应的最方便的方法似乎是jmeter的自定义JSON实用程序(JSON路径断言、JSON路径提取器、JSON格式化器),它们也是jmeter插件的一部分,应该可以与Blazemeter一起工作。

使用JSON路径而不是正则表达式提取器可能有助于您避免由JSON格式设置问题引起的处理错误。

如果ProductiDentifier外观在响应中是唯一的,则在此特定情况下,以下外观应该很好地工作:


{
   "order":{
      "Token":null,
      "ProductIdentifier":"c1e8e382-771e-4fee-b7c2-0a24afe798df",
      "OrderToken":null,
      "Products":[
         "one",
         "two",
         "three"
      ]
   }
}
. . .
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"
          ]
       }
    }
. . .
 类似资料:
  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。

  • 通过好奇心,有没有办法用Java Stream编写它?

  • Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提

  • 在这个问题的背景下,我想做以下修改: 查找: funcA(参数0,参数1,参数2,参数3); 替换: funcA可以有除param0之外的任意数量的参数。怎么做呢?为简单起见,忽略基本情况,即当传递给funcA的参数仅为param0时。 funcA是: 职能是: 编辑: 参数(param1,param2..)只是包含字母的字符串。

  • 我需要替换以下字符串中的引号。 最终输出应该是“这是test()ing和test()ing”; i、 e仅当它以“test()开头,以”结尾时才替换。中间的文本保持不变。 这个坏了。 请为同样的问题推荐合适的正则表达式。