jmeter-应用场景-需要使用上一个请求的响应参数作为下一个请求的请求参数的场景

需要上一个请求的结果作为下一个请求的请求参数
( 用来提取接口响应里的信息,给予后续接口传参用。)
上一个请求的响应参数

提取响应参数中的ORDERID

作为下一个请求的请求参数:变量${ORDERID},ORDERID正则表达式中的引用名称

 添加正则表达式来提取上一个请求的响应结果

正则表达式:http请求->添加->后置处理器->正则表达式提取器 引用名称:变量名,下个请求需要用到的${变量名}
正则表达式:.*"ORDERID":"(.+?)".*,响应参数,()里面的就是要提取的参数
相关字段解释如下:
1.正则表达式:数据提取器,通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,如最上面图的"ORDERID":"(.*?)","CommandID":(.*?),"ErrorMsg", 其中"ORDERID":"以及","CommandID": 和,"ErrorMsg"这3个就是左右边界,(.*?) 是替换了想要提取的内容,里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)
2.模板:对应正则表达式提取器类型,样式为:$n$。若模板为:$0$,则为整个表达式匹配到的内,即("ORDERID":"2000000000878681"},"CommandID":34345,"DeviceUUID":"4F76E49C-5186-4E0E-949D-7A941130AB0A","ErrorMsg":"","NodeID")。若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,即(2000000000878681) ,若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,即(34345),若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,即(200000000087868134345)。模板是可以自由组合的。
3.匹配数字:正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。当为 0 时,随机返回匹配的数据。当为 1 时,表示返回匹配结果数组的第一个元素。当为负数时,表示返回全部元素,并且同时会返回一个元素总数的变量ORDERID_matchNr,在引用时:通过${ORDERID_1}的方式来取第1个匹配的内容,${ORDERID_2}来取第2个匹配的内容。
4.缺省值:匹配失败时的默认值。通常用于后续的逻辑判断,可以使用一些特殊含义的,如0,NULL,ERROR等。
后续(验证正则表达式填写是否正确)
正则测试
可以直接在察看结果树里选择Regexp正则测试模式来测试正则是否写的正确。

 

2019-07-15
posted @ 2019-07-15 17:08  默晓梦  阅读(731)  评论(0编辑  收藏  举报