首页 文章

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

提问于
浏览
0

首先,让我开始这个问题,我只使用JMeter 36个小时 .

我已经能够成功创建一个执行POST(json主体)的线程来生成新记录 .

{  
   "id":1257697771,
   "displayName":"TERM2",
   "functionName":"f_1257697771",
   "displayableSourceExpression":"TRUE",
   "typeId":200,
   "groupId":300,
   "clobObjId":1257697772,
   "typeCode":5,
   ..........
}

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

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

  • 适用于:仅主要样品

  • 要检查的字段:正文作为文档

  • 参考名称: newRecord

  • 正则表达式:"id" :( . ?)\,"displayName"

  • 模板:$ 1 $

  • 比赛号码:1

  • 默认值:无

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

另外,如果我可以在另一个线程's HTTP request'参数中指定新引用( newRecord )或者使用BeanShell后处理器或响应断言等,我很困惑....

"Passing"的相同功能有很多答案 . Not being a programmer ,我试图跟随讨论“how to extract json response data in jmeter using regular expression extractor?”,但我还不清楚 .

任何见解都表示赞赏 . 谢谢 .

3 回答

  • 2

    JMeter变量是Thread Group的本地变量,您需要将变量转换为JMeter Property .

    使用:

    您定义 newRecord 变量的线程组中的

    ${__setProperty(newRecord,${newRecord},)}
    
    • __P()函数访问属性值如:
    ${__P(newRecord,)}
    

    Passing variable between thread groups

    有关更详细的说明,请参阅Knit One Pearl Two: How to Use Variables in Different Thread Groups文章 .

    还要注意Function Helper Dialog,因为看起来JMeter函数语法是由外星人开发的 .

  • 2

    要在线程之间传递值,您需要使用jmeter property函数 .

    在使用groovy的jsr223后处理器中获取值的代码如下:

    def userProperty = props.get('propertyToGet')
    vars.put('userProperty', String.valueOf(userProperty))
    

    然后,您将使用以下命令访问线程中的变量:

    ${userProperty}
    

    或者您可以直接使用速记:

    ${__P('propertyToGet')}
    

    jmeter中的变量是特定于线程的 .

  • 0

    感谢大家 . 我能够在你的帮助下解决它!

    在第一个帖子中:

    • 设置Reg Expression Extractor正则表达式= "id" :( . ?)\,"displayName"

    • 添加了一个Bean断言,其中Parameters = $ {__ setProperty(newRecord,$ ,)}

    在第二个帖子中:

    • 使用$ {__ P(newRecord,)}附加了路径网址

    执行第一个线程(POST)会产生一个具有唯一ID的新记录 . (1257698108)

    执行第二个线程(GET)显示

    GET http://server/.../.../.../.../1257698108

    并返回第一个线程中生成的确切数据 .

    谢谢大家的帮助!

相关问题