在另一个 JMeter 线程中使用提取的 JSON 值

Dav*_*vid 1 jmeter

首先,让我先介绍一下我只使用JMeter 36个小时的问题。

我已经能够成功创建一个执行 POST(json 正文)以生成新记录的线程。

{  
   "id":1257697771,
   "displayName":"TERM2",
   "functionName":"f_1257697771",
   "displayableSourceExpression":"TRUE",
   "typeId":200,
   "groupId":300,
   "clobObjId":1257697772,
   "typeCode":5,
   ..........
}
Run Code Online (Sandbox Code Playgroud)

我需要获取返回的新记录的 ID (1257697771) 值,以便在其他线程中对此记录执行更新、获取 ID、删除等。

经过大量阅读后,我创建了一个正则表达式提取器,其中:

  • 适用于:仅主要样本
  • 要检查的字段:正文作为文档
  • 参考名称newRecord
  • 正则表达式:"id":(.+?)\,"displayName"
  • 模板:$1$
  • 比赛编号:1
  • 默认值:无

此时,我不确定我的正则表达式格式是否正确(其中 (.+?) 有效)。

另外,我很困惑是否可以在另一个线程的 HTTP 请求的参数中指定新引用(newRecord)或使用 BeanShell 后处理器或响应断言等......

对于“传递”的相同功能,有很多答案。作为一名程序员,我尝试遵循讨论“如何使用正则表达式提取器在 jmeter 中提取 json 响应数据? ”,但我仍然不清楚。

任何见解都值得赞赏。谢谢。

Dmi*_*i T 5

JMeter 变量是线程组本地的,您需要将变量转换为 JMeter 属性。

使用:

  1. 线程组中的__setProperty()newRecord函数可以在其中定义变量,如下所示:

     ${__setProperty(newRecord,${newRecord},)}
    
    Run Code Online (Sandbox Code Playgroud)
  2. __P()函数来访问属性值,例如:

    ${__P(newRecord,)}
    
    Run Code Online (Sandbox Code Playgroud)

在线程组之间传递变量

有关更详细的说明,请参阅编织一珍珠二:如何在不同线程组中使用变量一文。

还要注意Function Helper 对话框,因为它看起来 JMeter 函数语法是由外星人开发的。