本文共 3655 字,大约阅读时间需要 12 分钟。
继续来学习RestAssured的基本功能,前面写了三个例子,状态码200判断,打印全部响应到控制台和判断响应中某些字符串。其实这三个都是RestAssured的关于响应的处理。这篇我们继续学习请求的处理,例如请求中如何设置参数,请求头字段如何设置等。
1.带参数的请求举例
场景1:带一个参数的请求
请求demo:
请求回来有多组数据
这个请求是有一个请求参数userId=2,我们在使用RestAssured代码中如何给这个请求添加参数呢,看看下面这个case
/** * 测试 带请求参数的请求 */ @Test public void testRequestWithParameter() { given(). param("userId", 2). when(). get("http://jsonplaceholder.typicode.com/posts"). then(). statusCode(200).log().all(); }
运行是成功的,你自己对比控制台输出和浏览器手动发送请求的结果。这样的话,关于给请求添加一个参数,我们学习了一个新方法 param("param1", "value1")
这个case和我们前面的写法有一点不一样。是用when()对象去发送请求,given()后面跟着是param用来设置参数,这是一种表中的带参数的请求的写法,如果请求没有参数,不写param()和when()。
场景2:
上面是一个参数的例子,如果是多个,例如一组参数,怎么办?这个时候我们就需要使用params(多个键值对的map对象)
请求demo:
在前面一个例子的基础上,我加了一个参数,这样筛选查询就一个结果,我这里用两个参数来表示多个参数如何在代码中写。
/** * 测试 带多个请求参数的请求 */ @Test public void testRequestWithParameters() { //构造一个Map对象,用来存多个参数和值 Mapparameters = new HashMap (); parameters.put("userId", "2"); parameters.put("id", "14"); given(). params(parameters). when(). get("http://jsonplaceholder.typicode.com/posts"). then(). statusCode(200).log().all(); }
运行成功,知道打印一组数据,和浏览器访问效果是一样的。这个就是多个参数如何在发送请求之前的组装过程。
2.带头字段的请求举例
上面是参数的例子,有时候请求的时候也需要指定一些请求头参数。一般来说请求头都是默认的参数和值,只有接口文档明确指出需要什么额外的头字段,我们接口测试才会加上头字段去发送请求。下面分别来模拟一个头字段和多个头字段的例子演示。
我们先通过浏览器的F12来收集几个请求头字段。
就来测试这两个头字段
accept-encoding:gzip,deflate,braccept-language:zh-cn,zh
场景1:一个头字段
accept-encoding:gzip,deflate,br
来测试这个,然后打印请求内容,看看是不是我们填写的这个,为了测试,我们这里把br不写进去。
/** * 测试 带一个请求头字段 */ @Test public void testRequestWithHeader() { given(). header("accept-encoding", "gzip,deflate"). when().log().all(). get("http://jsonplaceholder.typicode.com/posts"). then(). statusCode(200); }
运行一下看看打印的请求头信息是不是这个我们想要的
Request method: GETRequest URI: http://jsonplaceholder.typicode.com/postsProxy:Request params: Query params: Form params: Path params: Headers: accept-encoding=gzip,deflate Accept=*/*Cookies: Multiparts: Body: PASSED: testRequestWithHeader
Headers 这行,accept-encoding=gzip,deflate, 确实没有br,说明这个请求就是我们代码中设置的。
场景2:多个头字段
/** * 测试 带多个头字段的请求 */ @Test public void testRequestWithHeaders() { //构造一个Map对象,用来存多个参数和值 Mapheaders = new HashMap (); headers.put("accept-encoding", "gzip,deflate"); headers.put("accept-language", "zh-CN"); given(). headers(headers). when().log().all(). get("http://jsonplaceholder.typicode.com/posts"). then(). statusCode(200); }
运行效果
Request method: GETRequest URI: http://jsonplaceholder.typicode.com/postsProxy:Request params: Query params: Form params: Path params: Headers: accept-language=zh-CN accept-encoding=gzip,deflate Accept=*/*Cookies: Multiparts: Body: PASSED: testRequestWithHeaders
上面打印Header部分,说明我们代码设置成功。
3.同时带参数和请求头的情况
我们这里把多个参数和多个头字段放一个用例执行。
/** * 测试 带多个头字段 多个参数的请求 */ @Test public void testRequestWithHeadersAndParameters() { //构造一个Map对象,用来存多个参数和值 Mapparameters = new HashMap (); parameters.put("userId", "2"); parameters.put("id", "14"); //构造一个Map对象,用来存多个参数和值 Map headers = new HashMap (); headers.put("accept-encoding", "gzip,deflate"); headers.put("accept-language", "zh-CN"); given(). params(parameters). headers(headers). when().log().all(). get("http://jsonplaceholder.typicode.com/posts"). then(). statusCode(200).log().all(); }
在params().headers() 中间可以用and()隔开,写成 params().and().headers()
总结
本篇介绍了一个和多个参数以及一个和多个请求头字段的代码场景,和多个参数多个请求头字段一起的场景,基本上覆盖了HTTP请求的每个场景。
转载地址:http://tjows.baihongyu.com/