java根据xsd验证json文件_REST Assured Schema验证针对JSON和XML

13b66f6304f0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

REST的另一个特性可能是你希望利用REST Assured 来验证Schema。 如果您不熟悉该过程,则实施模式验证可能会非常棘手。

本文将指导您为JSON和XML设置REST Assured 验证Schema。

不熟悉schema验证? 它基本上确保从端点返回的JSON或XML响应与一组规则匹配。 规则在schema中定义。 规则可以是一个数字在一定范围内,或者一个属性不是null等。

REST Assured Schema验证设置

在我们实施任何REST Assured Schema 验证之前,我们需要确保在项目中导入对应的文件。

如果您只是在进行XML验证,那么REST Assured中已经包含了所有内容。

如果您正在进行JSON验证,则需要将REST Assured Schema Validation添加到构建文件中的依赖项:

compile 'io.rest-assured:json-schema-validator:3.0.3'

maven pom配置依赖:

io.rest-assured

json-schema-validator

3.0.6

XML

让我们从XML的Schema 验证开始

首先,需要为endPoint生成XML Schema定义。为此,从端点获取xml响应并将其粘贴到XSD生成器中.

这将为您生成一个XSD文件。现在我们需要将该文件放到项目的类路径中。在我的项目中,我将它放在src > main > resources文件夹中。我指定它在类路径中,因为当我构建项目时,它会出现在构建文件中,如下面的截图所示:

13b66f6304f0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

在这里插入图片描述

1、 我们可以在src> main> resources文件夹中看到Schema文件

2、 当项目构建时,我们可以看到Schema文件出现在红色构建文件夹中

现在让我们来看看XML Schema验证的测试代码:

@Test

public void testVideoGameSchemaXml() {

given().

contentType("application/xml").

header("Accept", "application/xml").

when().

get("http://localhost:8080/videogames/11").

then().body(matchesXsdInClasspath("videoGameSchema.xsd"));

}

@Test

public void testVideoGameSchemaXML() {

given().

pathParam("videoGameId", 5).

when().

get(EndPoint.SINGLE_VIDEOGAME).

then().

body(matchesXsdInClasspath("VideoGame.xsd"));

}

在这段代码中,我们指定contentType和accept头用于XML,并在“matchesXsdInClasspath检查返回的xml是否符合我们的schema。

记得在类的顶部静态导入matchesXsdInClasspath,如下所示:

import static io.restassured.matcher.RestAssuredMatchers.matchesXsdInClasspath;

JSON

现在让我们来看下REST Assured Schema 验证 JSON。

同样,我们需要首先生成一个Schema 。复制api返回的JSON,并将其粘贴到JSON Schema 生成器中。

同样,您需要将JSON模式文件放在类路径中,如下所示:

13b66f6304f0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

在这里插入图片描述

以下代码将根据JSON Schema检查我们的response:

@Test

public void testVideoGameSchemaJson() {

get("http://localhost:8080/videogames/11")

.then().assertThat().body(matchesJsonSchemaInClasspath("videoGameSchema.json"));

}

@Test

public void testVideoGameSchemaJSON() {

given().

pathParam("videoGameId", 5).

when().

get(EndPoint.SINGLE_VIDEOGAME).

then().

body(matchesJsonSchemaInClasspath("VideoGameJsonSchema.json"));

}

我们再次调用端点“

再次记住静态导入:

import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值