RestAssured接口自动化从入门到框架搭建-5-RestAssured基本功能2-请求参数和请求头

继续来学习RestAssured的基本功能,前面写了三个例子,状态码200判断,打印全部响应到控制台和判断响应中某些字符串。其实这三个都是RestAssured的关于响应的处理。这篇我们继续学习请求的处理,例如请求中如何设置参数,请求头字段如何设置等。

 

1.带参数的请求举例

场景1:带一个参数的请求

请求demo:https://jsonplaceholder.typicode.com/posts?userId=2

请求回来有多组数据

这个请求是有一个请求参数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:https://jsonplaceholder.typicode.com/posts?userId=2&id=14

在前面一个例子的基础上,我加了一个参数,这样筛选查询就一个结果,我这里用两个参数来表示多个参数如何在代码中写。

        /**
	 * 测试 带多个请求参数的请求
	 */
	@Test
	public void testRequestWithParameters() {
		//构造一个Map对象,用来存多个参数和值
		Map<String, String> parameters = new HashMap<String,String>();
		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,br
accept-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:	GET
Request URI:	http://jsonplaceholder.typicode.com/posts
Proxy:			<none>
Request params:	<none>
Query params:	<none>
Form params:	<none>
Path params:	<none>
Headers:		accept-encoding=gzip,deflate
				Accept=*/*
Cookies:		<none>
Multiparts:		<none>
Body:			<none>
PASSED: testRequestWithHeader

Headers 这行,accept-encoding=gzip,deflate, 确实没有br,说明这个请求就是我们代码中设置的。

场景2:多个头字段

        /**
	 * 测试 带多个头字段的请求
	 */
	@Test
	public void testRequestWithHeaders() {
		//构造一个Map对象,用来存多个参数和值
		Map<String, String> headers = new HashMap<String,String>();
		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:	GET
Request URI:	http://jsonplaceholder.typicode.com/posts
Proxy:			<none>
Request params:	<none>
Query params:	<none>
Form params:	<none>
Path params:	<none>
Headers:		accept-language=zh-CN
				accept-encoding=gzip,deflate
				Accept=*/*
Cookies:		<none>
Multiparts:		<none>
Body:			<none>
PASSED: testRequestWithHeaders

上面打印Header部分,说明我们代码设置成功。

 

3.同时带参数和请求头的情况

我们这里把多个参数和多个头字段放一个用例执行。

/**
	 * 测试 带多个头字段 多个参数的请求
	 */
	@Test
	public void testRequestWithHeadersAndParameters() {
		//构造一个Map对象,用来存多个参数和值
		Map<String, String> parameters = new HashMap<String,String>();
		parameters.put("userId", "2");
		parameters.put("id", "14");
						
		//构造一个Map对象,用来存多个参数和值
		Map<String, String> headers = new HashMap<String,String>();
		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请求的每个场景。

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG 是一种流行的测试框架,它提供了丰富的功能来进行单元测试、集成测试和端到端测试。TestNG 结合 TestAssured 可以进行接口自动化测试,以下是 TestNG TestAssured 接口自动化测试框架的优点: 1. 简单易用:TestNG TestAssured 框架易于学习和使用。TestNG 的注解可以方便地对测试用例进行分组、依赖、优先级等操作,而 TestAssured 提供了直观的 API,可以轻松地完成接口测试。 2. 支持多种验证方式:TestAssured 提供了多种验证方式,如 body、header、cookie、statusCode、responseTime 等,可以全面地验证接口的正确性。 3. 支持数据驱动:TestNG TestAssured 框架可以通过数据驱动的方式进行接口测试,可以通过 Excel、CSV、JSON 等数据源进行参数化测试,提高了测试效率和覆盖率。 4. 支持并发测试:TestNG TestAssured 框架支持并发测试,可以提高测试效率。可以通过 TestNG 的 parallel 属性来设置并发线程数,也可以通过 TestAssuredRestAssured.config() 方法来设置并发连接数。 5. 集成度高:TestNG TestAssured 框架可以与其他测试工具和框架集成,如 Maven、Jenkins、ExtentReports 等,可以方便地进行持续集成和测试报告生成。 总之,TestNG TestAssured 接口自动化测试框架具有易用性高、多种验证方式、数据驱动、并发测试、集成度高等优点,是进行接口自动化测试的不二选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值