gpt4 book ai didi

java - RestAssured 和属性的 GPath 表达式不一致

转载 作者:行者123 更新时间:2023-12-01 12:54:03 24 4
gpt4 key购买 nike

我们使用 REST-assured 框架在 Java 中进行一些单元/集成测试。

来自 REST 服务的 XML 答案与此类似:

<?xml version="1.0" encoding="UTF-8"?>
<Items xmlns="urn:service:com:namespace:item/1"
returned="3" found="3">

<ItemRef object="urn:svc:com:car:item:123456" type="door">door-123456.pdf</ItemRef>
<ItemRef object="urn:svc:com:car:item:983425" type="mirror">mirror-43562577.pdf</ItemRef>
<ItemRef object="urn:svc:com:car:item:983425" type="wheel" >door-94584854.pdf</ItemRef>
</Items>

在我的测试中,我有兴趣通过读取属性returned来检查返回的项目数量,如下所示

givenOK()
.expect()
.body("Items.@returned", equalTo("3")) // this is a string
.when()
.get(myurl)

而且效果很好

现在我还想使用相同的逻辑来控制 xmlns 中的 URN 是否正确:

givenOK()
.expect()
.body("Items.@returned", equalTo("3")) // this is a string
.body("Items.@xmlns", equalTo("urn:service:com:namespace:item/1"))
.when()
.get(myurl)

但是当我的测试运行时,表达式 Items.@xmlns 似乎没有返回属性的值而是空的:[]

知道为什么这不起作用吗?

最佳答案

难道“xmlns”属性因为表示命名空间而被特殊对待?

一种可能的解决方法是在 XmlConfig 中声明命名空间并验证正文中的某些内容。

given().
config(RestAssured.config().xmlConfig(XMLConfig.xmlConfig().declareNamespace("ns", "urn:service:com:namespace:item/1"))).
when().
get(myUrl).
then().
body("'ns:ItemRef'[0]", equalTo("door-123456.pdf"));

另一个具有多个节点和属性的示例(显式路径):

given()
.config(
RestAssured.config()
.xmlConfig(XmlConfig.xmlConfig()
.declareNamespace("ns", "urn:service:com:namespace:item/1"))).
when()
.get(myUrl)
.then()
.body("'ns:RootNode'.'ns:Level1'.'ns:Level2'[0].'@ns:id'", equalTo("AN-ID-123"));

关于java - RestAssured 和属性的 GPath 表达式不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com