首先,让我开始这个问题,我只使用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 回答
JMeter变量是Thread Group的本地变量,您需要将变量转换为JMeter Property .
使用:
您定义
newRecord
变量的线程组中的有关更详细的说明,请参阅Knit One Pearl Two: How to Use Variables in Different Thread Groups文章 .
还要注意Function Helper Dialog,因为看起来JMeter函数语法是由外星人开发的 .
要在线程之间传递值,您需要使用jmeter property函数 .
在使用groovy的jsr223后处理器中获取值的代码如下:
然后,您将使用以下命令访问线程中的变量:
或者您可以直接使用速记:
jmeter中的变量是特定于线程的 .
感谢大家 . 我能够在你的帮助下解决它!
在第一个帖子中:
设置Reg Expression Extractor正则表达式= "id" :( . ?)\,"displayName"
添加了一个Bean断言,其中Parameters = $ {__ setProperty(newRecord,$ ,)}
在第二个帖子中:
执行第一个线程(POST)会产生一个具有唯一ID的新记录 . (1257698108)
执行第二个线程(GET)显示
GET http://server/.../.../.../.../1257698108
并返回第一个线程中生成的确切数据 .
谢谢大家的帮助!