博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RestAssured接口自动化从入门到框架搭建-5-RestAssured基本功能2-请求参数和请求头
阅读量:4302 次
发布时间:2019-05-27

本文共 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对象,用来存多个参数和值		Map
parameters = 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对象,用来存多个参数和值		Map
headers = 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对象,用来存多个参数和值		Map
parameters = 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/

你可能感兴趣的文章
c++中.dll与.lib文件的生成与使用的详解
查看>>
CyAPI.lib(CyAPI.obj) : error LNK2019: 无法解析的外部符号...
查看>>
在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
查看>>
DeleteDC() 与 ReleaseDC() 的区别 [转]
查看>>
WinHand.cpp Line 199 错误 WinHand.cpp Line 218 错误
查看>>
GDI对象和CDC的使用方法(防止资源泄漏)
查看>>
MFC中的DC,CDC和HDC
查看>>
MFC 自定义消息四步曲与在参数中传递变量
查看>>
MFC多线程各种线程用法 .
查看>>
安全终止MFC线程全
查看>>
C++框架_之Qt的信号和槽的详解
查看>>
QT信号和槽
查看>>
QT学习——Tcp客户端通信(本地回环)
查看>>
Qt下TCP编程
查看>>
客户端与服务端的TCP通信实现(Qt)
查看>>
QT之TCP通信
查看>>
QT 之 TCP/IP 服务器和客户端(一)
查看>>
qt中的tcp
查看>>
基于MFC的socket编程(异步非阻塞通信)
查看>>
异步SOCKET与同步SOCKET
查看>>