中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

發布時間:2021-09-03 15:00:50 來源:億速云 閱讀:151 作者:小新 欄目:編程語言

這篇文章主要介紹了Java接口自動化測試框架設計之Get請求方法和測試的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.Get請求API舉例

瀏覽器打開網址https://reqres.in,然后下拉一屏,我們就可以看到這個網站的API舉例,我們來看看顯示用戶的get接口。

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

通過這個圖,我們能夠獲取這些信息

1)網站host地址:https://reqres.in/

2)用戶展示請求方式是: Get

3)接口的url 是: /api/users

4)接口的響應狀態碼是200,還可以看到響應body的JSON內容。

 獲取上面這些接口信息之后,我們在本地postman上來測試一下,如果沒有postman請安裝一個和postman差不多的能做接口手工測試的圖形化界面工具,例如jmeter等。

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

這個接口,我們通過postman手動測試,發現和網站提供的是一樣結果,說明這get請求的接口測試通過。那么如果我們想通過Java代碼實現,需要怎么做呢?接下來,才是本篇的重點內容。

 2.代碼過程

前面一篇文章,我們介紹了基礎環境的搭建過程,這里,接著前面的環境來逐步完成一個Get請求的設計和測試過程。

2.1 設計配置文件

 我們這個序列是要教會大家設計接口自動化測試框架的目的,所以我們一些設計和組織項目結構的方式,需要參考框架的思維。寫一個配置文件,很簡單,意義就是方便測試多套環境下的接口測試。我們工作中,一個項目,分測試環境,預發布環境和線上生產環境,這三套環境,接口肯定是一樣,只不過服務器地址不同,所以,我們框架設計需要支持寫一套接口測試用例,在三套環境上可以跑得同。

在src/main/java下新建一個包:com.qa.config,然后在新包下新建一個config.properties文件,文件內容如下。

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

然后在src/main/java下新建一個包:com.qa.base,新建一個TestBase.java,這個類作為所有接口請求測試的父類,都需要繼承這個父類,目前我們就寫一個構造方法,實現加載讀取properties文件。

TestBase.java 代碼如下:

package com.qa.base; 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class TestBase {
	
	public Properties prop;
	
	//寫一個構造函數
	public TestBase() {
		
		try {
			prop = new Properties();
			FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+
 "/src/main/java/com/qa/config/config.properties");
			prop.load(fis);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}		
	}	
}

這里來復習下構造函數的作用,上面我們把加載配置文件的代碼寫在空參構造里,好處就是,每初始化這個類的對象就會執行構造函數的代碼,即執行讀取配置文件這么一個作用。關于上面配置文件路徑是否拼接正確,你可以新建一個main方法的類,執行打印語句:System.out.println(System.getProperty("user.dir"));

目前,項目結構圖如下

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

2.2 Get請求方法代碼實現

在src/main/java下新建一個包:com.qa.restclient,然后新建一個RestClient.java文件,下面是具體代碼,實現了get請求,和得到相應狀態碼和響應頭信息,以及響應主體的json內容。

package com.qa.restclient;
 
import java.io.IOException;
import java.util.HashMap;
import org.apache.http.Header;
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;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
 
public class RestClient {
	
	
	//1. Get 請求方法
	public void get(String url) throws ClientProtocolException, IOException {
		
		//創建一個可關閉的HttpClient對象
		CloseableHttpClient httpclient = HttpClients.createDefault();
		//創建一個HttpGet的請求對象
		HttpGet httpget = new HttpGet(url);
		//執行請求,相當于postman上點擊發送按鈕,然后賦值給HttpResponse對象接收
		CloseableHttpResponse httpResponse = httpclient.execute(httpget);
		
		//拿到Http響應狀態碼,例如和200,404,500去比較
		int responseStatusCode = httpResponse.getStatusLine().getStatusCode();
		System.out.println("response status code -->"+responseStatusCode);
		
		//把響應內容存儲在字符串對象
		String responseString = EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
		
		//創建Json對象,把上面字符串序列化成Json對象
		JSONObject responseJson = JSON.parseObject(responseString);
		System.out.println("respon json from API-->" + responseJson);
		
		//獲取響應頭信息,返回是一個數組
		Header[] headerArray = httpResponse.getAllHeaders();
		//創建一個hashmap對象,通過postman可以看到請求響應頭信息都是Key和value得形式,所以我們想起了HashMap
		HashMap<String, String> hm = new HashMap<String, String>();
		//增強for循環遍歷headerArray數組,依次把元素添加到hashmap集合
		for(Header header : headerArray) {
			hm.put(header.getName(), header.getValue());
		}
		
		//打印hashmap
		System.out.println("response headers -->"+ hm);
		
	} 
}

上面的get方法代碼寫得比較亂,需要認真看注釋,不然層次不清晰。這段代碼肯定需要以后重構的,我們剛開始,方便我們測試就先這樣去寫就好。目前,項目結構圖如下

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

2.3 TestNG用例測試Get方法

在src/test/java下新建一個包:com.qa.tests,然后新建一個GetApiTest.java類,寫一個TestNG的測試用例來測試下我們上面寫的Get請求方法。

package com.qa.tests;
 
import java.io.IOException;
 
import org.apache.http.client.ClientProtocolException;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
 
import com.qa.base.TestBase;
import com.qa.restclient.RestClient;
 
public class GetApiTest extends TestBase{
	TestBase testBase;
	String host;
	String url;
	RestClient restClient;
	
	
	@BeforeClass
	public void setUp() {
		testBase = new TestBase();
		host = prop.getProperty("HOST");
		url = host + "/api/users";
		
	}
	
	@Test
	public void getAPITest() throws ClientProtocolException, IOException {
		restClient = new RestClient();
		restClient.get(url);
	}
}

選擇run as testng,運行,輸出結果如下:

[RemoteTestNG] detected TestNG version 6.14.3
response status code -->200
respon json from API-->{"per_page":3,"total":12,"data":[{"last_name":"Bluth","id":1,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","first_name":"George"},{"last_name":"Weaver","id":2,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg","first_name":"Janet"},{"last_name":"Wong","id":3,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg","first_name":"Emma"}],"page":1,"total_pages":4}
response headers -->{Transfer-Encoding=chunked, Server=cloudflare, CF-RAY=41e822894b39336d-HKG, Access-Control-Allow-Origin=*, ETag=W/"1bb-D+c3sZ5g5u/nmLPQRl1uVo2heAo", Connection=keep-alive, Set-Cookie=__cfduid=d9d93dc43c046707f916670ef491f4c8e1526917157; expires=Tue, 21-May-19 15:39:17 GMT; path=/; domain=.reqres.in; HttpOnly, Date=Mon, 21 May 2018 15:39:17 GMT, Content-Type=application/json; charset=utf-8, X-Powered-By=Express, Expect-CT=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"}
PASSED: getAPITest

接下來,我們把響應內容的的body的json內容拷貝到一個在線的Josn格式化顯示網站(https://www.json.cn/),看看效果如下。

Java接口自動化測試框架設計之Get請求方法和測試的示例分析

這個結果和postman上一樣,數據都對得上,本篇關于Java代碼基于Httpclient開源庫實現Get請求的過程就介紹到這里。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java接口自動化測試框架設計之Get請求方法和測試的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青冈县| 海原县| 谷城县| 社旗县| 隆化县| 台北市| 遂平县| 鄂托克前旗| 西充县| 谷城县| 定边县| 丹东市| 三亚市| 平舆县| 安顺市| 务川| 定南县| 江川县| 湘西| 邢台市| 阿拉善左旗| 神农架林区| 灵山县| 富民县| 苍梧县| 恩平市| 浏阳市| 凤阳县| 喀喇| 普安县| 胶南市| 黎川县| 青冈县| 潞城市| 大余县| 竹北市| 平远县| 邯郸市| 上栗县| 寿阳县| 建德市|