当我请求GET请求时,我得到了JSON响应,但这里我的要求是验证响应体的结构。
例如:
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[
{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},
{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}
]
}
}
上面的响应有结构,所以我需要验证结构而不是键值对,我如何实现?
最好的方法是验证json模式匹配。
首先,您需要将此依赖项添加到您的pom中.xml
<!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
然后,您需要创建一个文件,其结构如下:
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"flow_id": {
"type": "string",
"minLength": 36,
"maxLength": 36
},
"flow_org_id": {
"type": "string"
}
},
"required": [ "flow_id", "flow_org_id" ]
}
}
}
}
有很多服务都是基于json生成模式的,例如,这一个
一旦模式文件准备好,您需要以字符串格式提供文件的路径-例如-
private static final String GET_SUBSCRIPTION_JSON_SCHEMA_PATH =
"json/schemas/GetSubscriptionByIdSchema.json";
并调用matchesJsonSchemaInClasspath("your/path/to/json-Schema")
方法进行断言。
UPD:
所以流程基本上是这样的:
实际上,它将如下所示:
@Test
public void someTestMethod() {
Response responseToValidate = // here you should assign and store returned response
responseToValidate
.assertThat()
.statusCode(200)
.body("json.path.to.needed.key", equalTo("123"))
. body(匹配JsonSchemaInClasspath("路径/到/你的/架构/在/字符串/格式"));}
我有一个测试场景,其中Web应用程序中的字段填充了来自json响应的数据。 例如- 为了实现这一点,我了解了RestAsure和HTTP客户端库,但我不确定如何发送请求部分或检索响应,因为在许多情况下响应非常大(超过150个名称值对)。 以下是我尝试过的: 现在,我在 Method.POST 行中遇到错误,它的显示语法错误也使我对是否有其他方法感到困惑。
我收到了针对我的API的错误请求的以下响应。我将RestAssured用于我的rest响应断言。 我需要验证响应的所有属性的值。我正在努力验证此路径:。我无法为它想出GPath。 以下是我所作的断言: 由于路径不正确,断言总是失败。
我发布了简单的数据,比如 到(让它成为)/帖子乌里,例如smth喜欢 我可以验证,该正文不是空的 或者检查,响应的字段具有我们正在设置的值,例如 但我不确定,它的最佳/正确的方式。那么,问题:如何验证,该实体是在发布后创建的,并保证?
我在用放心做API自动化。我想从API响应中获取值并传递给另一个java类, 这是我的测试类, 如何将此方法更改为另一种类型的无效值,或者如何在另一个java类中传递人员引用值
我正在使用验证json模式。如果响应主体具有文件 如果响应正文有未在json模式中定义的EXTRA变量/值,则不会失败。如何使这个测试用例失败? 例如: 下面是具有预定义 JSON 架构的响应正文。 如果响应正文给出了额外的值,例如电子邮件/电话,那么它仍然在传递。我需要让它失败。这是我的测试用例,如果响应正文返回额外值,则失败。如何验证此测试用例?
我正在尝试为Rest-Assured(RESTful API)生成cucumber报告,并且我还热衷于捕获cucumber报告中的请求/响应。我想知道是否有人已经实现了这一点或可以提供一些指示。