Jmeter中使用正则表达式提取XML结果中的值做参数化

背景: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中的返回值做为其他接口的请求参数了.


版权声明:本文为sankoudoudou原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。