本文共 1773 字,大约阅读时间需要 5 分钟。
这篇介绍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组件。
转载地址:http://hjows.baihongyu.com/