Java+Maven+TestNG接口(API)自动化测试教程(五) Get 方法的接口测试

5.1 创建发送接口的测试类

我们的项目需要有这样一个类,它能够实现发送请求,接收响应,验证响应的功能。 暂时我们只考虑发送 Get 方法的请求。

5.1.1 创建所需变量

在我们的第一个测试类中,我们需要使用 httpClient 来发送请求,接收响应,然后对响应信息做一个验证。

在我们的项目 src/test/java 目录下新建一个包名为:

com.myteest.httpclient.test,在包下新建一个普通类:SimpleGetTest

首先我们考虑需要如下变量:

String url;  
CloseableHttpClient httpClient;
CloseableHttpResponse response; 
HttpEntity responseBody;
int responseCode;

• url是我们进行get请求的地址;

• client是用来发送http请求的CloseableHttpClient对象的实例;

• response用来存储我们接收到的响应的CloseableHttpResponse对象的实例;

• responseBody用来存储响应的主体信息;

• responseCode用来存储响应的状态码;

5.1.2 利用 httpclient 框架编写代码实现请求发送和响应接收

接下来实现请求的发送和响应接收。

我们就以网站上的第一个 get 请求为例,将其网址和 Request 部分复制并连接起 来,形成 URL 如下:

url = "https://reqres.in/api/users?page=2";

接下来用三行代码来发送请求,接收响应:

//创建一个httpClient的实例
client = HttpClients.createDefault();
//创建一个httpGet请求实例
HttpGet httpGet = new HttpGet(url);
//使用httpClient实例的execute方法发送刚创建的get请求,并用httpResponse将响应接收
response = client.execute(httpGet);

其实到这一步我们的主体工作已经做完了,接下来要对接收到的响应进行一个处理、 分析和验证。

首先来看下状态码如何获取:

responseCode = response.getStatusLine().getStatusCode(); 

其次从响应中取得响应主体并转为字符串,最后使用 JSON 对象解读该字符 串,返回一个 JSONOBject 对象,利用该对象获取指定的键值:

// 从响应中提取出响应主体
responseBody = response.getEntity();
//转为字符串
String responseBodyString = EntityUtils.toString(responseBody, "utf-8");
// 创建Json对象,把上面字符串序列化成Json对象
JSONObject responseJson = JSON.parseObject(responseBodyString);
// json内容解析
int page = responseJson.getInteger("page");

完整代码如下:

package com.mytest.httpclient.test; 

import java.io.IOException;  
import org.apache.http.HttpEntity;                                                                                                                                      import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.CloseableHttpResponse; 
import org.apache.http.client.methods.HttpGet;                                                                                                                          import org.apache.http.impl.client.CloseableHttpClient; 
import org.apache.http.impl.client.HttpClients;                                                                                      import org.apache.http.util.EntityUtils; 

public class SimpleGetTest { 
 	String url; 
 	CloseableHttpClient client; 
 	CloseableHttpResponse response; 
 	HttpEntity responseBody; 
 	int responseCode; 

 	public void sendGet() throws Throwable { 
 	 	String url = "https://reqres.in/api/users?pages=2"; 
 	 	// 创建一个 httpClient 的实例 
 	 	client = HttpClients.createDefault(); 
 	 	// 创建一个 httpGet 请求实例 
 	 	HttpGet httpGet = new HttpGet(url); 
 	 	try { 
 	 	 	// 使用 httpClient 实例发送刚创建的 get 请求,并用httpResponse 将响应接收 
 	 	 	response = client.execute(httpGet); 
 	 	 	// 从响应中提取出状态码  
 	 	 	responseCode = response.getStatusLine().getStatusCode(); 
 	 	 	System.out.println(responseCode); 
 	 	 	// 从响应中提取出响应主体 
 	 	 	responseBody = response.getEntity(); 
 	 	 	// 转为字符串 
 	 	 	String responseBodyString = 
EntityUtils.toString(responseBody, "utf-8"); 
 	 	 	System.out.println(responseBodyString); 
 	 	 	EntityUtils.consume(responseBody); 
 	 	} catch (ClientProtocolException cpe) { 
 	 	 	cpe.printStackTrace(); 
 	 	} catch (IOException ioe) { 
 	 	 	ioe.printStackTrace(); 
 	 	}finally { 	 
 	 	 	client.close(); 
 	 	 	response.close(); 
 	 	}   
 	} 

 	public static void main(String[] args) throws Throwable { 
 	 	SimpleGetTest simpleGetTest = new SimpleGetTest(); 
 	 	simpleGetTest.sendGet(); 
 	} 
} 

未完待续......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章