You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestAssured测试SOAP服务验证XML响应指定值code字段数量问题

RestAssured测试SOAP接口XML断言问题解决方案

问题1:xmlPath获取code字段返回拼接字符串而非数组

根因:XmlPath默认未指定完整层级时会将所有匹配节点的文本内容直接拼接,返回单个字符串而非列表。
解决方案:使用getList方法指定完整节点路径,同时指定返回值类型:

// 直接获取所有code节点的整数值列表
List<Integer> codeList = response.getBody().xmlPath().getList("Response.Result.code", Integer.class);
// 此时codeList即为预期的[0,0,0],可直接断言大小和值
assertThat(codeList, hasSize(3));
assertThat(codeList, everyItem(is(0)));

问题2:count()函数的XPath断言失败

根因:hasXPath方法第一个参数仅支持传入XPath表达式返回待匹配值,不能直接在XPath中写判断逻辑,需要搭配Hamcrest匹配器做值校验。
解决方案:拆分XPath表达式和匹配逻辑,正确写法如下:

import static org.hamcrest.Matchers.equalTo;

// 校验值为0的code节点数量为3
response.then().body(hasXPath("count(//code[text()='0'])", equalTo(3)));

补充说明

如果遇到命名空间干扰导致节点匹配失败,可以先关闭命名空间校验:

RestAssured.config = RestAssured.config().xmlConfig(xmlConfig().disableNamespaces());

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:09:04