首先,让我开始这个问题,我只使用JMeter 36个小时。
我已经能够成功创建一个执行POST(json主体)的线程来生成新记录。
{
"id":1257697771,
"displayName":"TERM2",
"functionName":"f_1257697771",
"displayableSourceExpression":"TRUE",
"typeId":200,
"groupId":300,
"clobObjId":1257697772,
"typeCode":5,
..........
}
我需要获取新记录的ID(1257697771)值,以便在其他线程中对此记录执行更新,获取ID,删除等。
经过多次阅读,我创建了一个正则表达式提取器,其中:
此时,我不确定我的正则表达式是否在(。+?)有效的情况下正确格式化。
另外,如果我可以在另一个线程的HTTP请求的参数中指定新引用( newRecord )或者使用BeanShell后处理器或响应断言等,我会感到困惑。 ..
对于“传递”的相同功能有很多答案。 不是程序员,我试图按照“how to extract json response data in jmeter using regular expression extractor?”进行讨论,但我还不清楚。
任何见解都表示赞赏。感谢。
答案 0 :(得分:2)
要在线程之间传递值,您需要使用jmeter property函数。
在使用groovy的jsr223后处理器中获取值的代码如下:
def userProperty = props.get('propertyToGet')
vars.put('userProperty', String.valueOf(userProperty))
然后,您将使用以下命令访问线程中的变量:
${userProperty}
或者你可以直接使用速记:
${__P('propertyToGet')}
jmeter中的变量是特定于线程的。
答案 1 :(得分:2)
JMeter变量是Thread Group的本地变量,您需要将变量转换为JMeter Property。
使用:
__setProperty()函数在线程组中,您可以在其中定义newRecord
变量,如:
${__setProperty(newRecord,${newRecord},)}
__P()函数可以访问属性值,如:
${__P(newRecord,)}
有关详细说明,请参阅Knit One Pearl Two: How to Use Variables in Different Thread Groups文章。
还要注意Function Helper Dialog,因为看起来JMeter函数语法是由外星人开发的。
答案 2 :(得分:0)
谢谢大家。我能在你的帮助下解决它!
在第一个帖子中:
设置Reg Expression Extractor 正则表达式 =" id" :(。+?)\," displayName"
< / LI>添加了一个Bean断言,其中参数 = $ {__ setProperty(newRecord,$ {newRecord},)}
在第二个帖子中:
执行第一个线程(POST)会产生一个具有唯一ID的新记录。 (1257698108)
执行第二个线程(GET)显示
GET http://server/.../.../.../.../1257698108
并返回第一个帖子中生成的确切数据。
感谢大家的帮助!