背景:jmeter中socket请求返回的数据格式为XML,需要做参数化关联,也就是A接口的返回结果做为B接口的请求参数
说明:可以使用XPath Extractor方法或者正则表达式提取器(Regular Expression Extractor)提取,正则表达式的好处就是不管返回数据的位置如何变动,都不影响要取的值,操作起来也方便简单.所以我们用正则表达式来做.
PS:既然要对处理结果做提取,所以都是请求后要做的,固然组件都在[后置处理器]中
附:接口的返回结果,要提取的xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<object name="a">
<field name="status" value="S"/>
</object>
<object name="b">
<field name="total" value="00000000000000000000"/>
</object>
<object name="c">
<field name="orderId" value="aa"/>
<field name="accNO" value="bb"/>
<field name="amount" value="cc"/>
<field name="respMsg" value="处理成功"/>
</object>
</root>
1.在A请求中添加后置处理器-正则表达式提取器
正则表达式的一个好处就是不用关心她嵌套了多少个标签,只关注最后要取值的标签就可以
(1)正则表达式说明(.+?):
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:在找到第一个匹配项后停止。
(2)模板说明:
模板:表示使用提取到的第几个值:
$-1$:表示取所有值
$0$:表示随机取值
$1$:表示取第1个
$2$:表示取第二个
以此类推:$n$:表示取第n个
注:正则表达式各个标签直接不允许有空格
2.B请求使用提取出的值
3.如果是提取的值为一个,正则表达式的表示如下
需要注意,模板使用${1},在请求时直接用别名${advance}就可以
至此,我们就提取到xml中的返回值做为其他接口的请求参数了.