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(); 
 	} 
} 

未完待續......

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