这篇介绍Rest Assured中Content-Type的校验,我们常见的响应内容格式,一般有xml,json,html等。这篇主要介绍如何判断一个响应内容的格式是不是JSON, 是不是xml, 是不是html。 本来想再说具体的xml格式中schema语法校验,和JSON中schema的语法校验,没有找到合适的接口。
1.校验响应内容格式是html
这里拿百度首页举例。
/**
* 验证响应文件类型是html
*/
@Test
public void testResponseContentType2() {
given().
get("https://www.baidu.com").
then().
statusCode(200).
contentType(ContentType.HTML);
}
2.校验响应内容格式是json
/**
* 验证响应文件类型是 json
*/
@Test
public void testResponseContentType() {
given().
get("http://jsonplaceholder.typicode.com/photos/1").
then().
statusCode(200).
contentType(ContentType.JSON);
}
3.校验响应内容格式是xml
/**
* 验证响应文件类型是xml
*/
@Test
public void testResponseContentType3() {
given().
get("http://www.thomas-bayer.com/sqlrest/INVOICE/").
then().
statusCode(200).
contentType(ContentType.XML);
}
4.JSON的schema约束校验
因为响应的JSON内容,每个公司可能有自己格式,一般来说,都是采用json schema约束。也就是说返回的json的内容是一个标准的模板,这个模板里面有一些要求或者约束。这个不好举例,了解一下就好。
在src-test-resource包下,放一个test-json-schema.json的文件,内容如下。
{
"$schema": "http://json-schema.org/draft-04/schema#",
"RestResponse" : {
"countryIso2" : "integer",
"stateAbbr" : "string",
"postal" : "string",
"continent" : "string",
"state" : "blank fields are acceptable",
"logitude" : "",
"latitude" : "",
"ds" : "string",
"ip" : "string",
"city" : "string",
"country" : "string"
}
}
上面这些字段,每家公司都不一样,都是自己定制的。下面的代码是用来校验响应的json格式是不是准寻这个内部指定的json schema约束。
使用这个json schema校验之前,需要导入下面这个包。
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;
/**
* json schema约束
*/
@Test
public void testJsonSchema() {
given().
get("xxxxxx").
then().
assertThat().body(matchesJsonSchemaInClasspath("test-json-schema.json"));
}
这个没有在线的例子,知道json schema校验有这么一个方法就行,这个方法来源pom.xml中的json-schema-validator组件。