前言
無論是自動化測試還是自動化部署,擼碼肯定少不了,所以下面的基于java語言的接口自動化測試,要想在業(yè)務上實現接口自動化,前提是要有一定的java基礎。
如果沒有java基礎,也沒關系。這里小編也為大家提供了一套java基礎精講視頻(雖然年代有點久2017,但是講解內容絕對干貨,小編看了很多的基礎視頻唯有這一套講解到位)由于視頻較大,放到了某盤上,后臺回復關鍵字【java】即可獲取。
進入主題
使用技術
- Spring Boot
- mybatis
- testng
- Swagger2
- extentreports
- httpclient(這里抽取了一些方法非常好用)
- log4j2
項目結構
- httpclient 抽取工具類部分方法
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
/**
* @author lgl
* @date 2020/05/15 15:19
*/
public class RestTemplateUtils {
private static final RestTemplate REST_TEMPLATE;
static {
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create()
.setMaxConnTotal(1000)
.setMaxConnPerRoute(100)
.build());
httpRequestFactory.setConnectionRequestTimeout(5000);
httpRequestFactory.setConnectTimeout(5000);
httpRequestFactory.setReadTimeout(10000);
// httpRequestFactory.setBufferRequestBody(false);
REST_TEMPLATE = new RestTemplate(httpRequestFactory);
}
// ----------------------------------GET-------------------------------------------------------
/**
* GET請求調用方式
*
* @param url 請求URL
* @param responseType 返回對象類型
* @return ResponseEntity 響應對象封裝類
*/
public static <T> ResponseEntity<T> get(String url, Class<T> responseType) {
return REST_TEMPLATE.getForEntity(url, responseType);
}
/**
* GET請求調用方式
*
* @param url 請求URL
* @param responseType 返回對象類型
* @param uriVariables URL中的變量,按順序依次對應
* @return ResponseEntity 響應對象封裝類
*/
public static <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {
return REST_TEMPLATE.getForEntity(url, responseType, uriVariables);
}
// ----------------------------------POST-------------------------------------------------------
/**
* POST請求調用方式
*
* @param url 請求URL
* @param responseType 返回對象類型
* @return
*/
public static <T> ResponseEntity<T> post(String url, Class<T> responseType) {
return REST_TEMPLATE.postForEntity(url, HttpEntity.EMPTY, responseType);
}
/**
* POST請求調用方式
*
* @param url 請求URL
* @param requestBody 請求參數體
* @param responseType 返回對象類型
* @return ResponseEntity 響應對象封裝類
*/
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
return REST_TEMPLATE.postForEntity(url, requestBody, responseType);
}
/**
* POST請求調用方式
*
* @param url 請求URL
* @param requestBody 請求參數體
* @param responseType 返回對象類型
* @param uriVariables URL中的變量,按順序依次對應
* @return ResponseEntity 響應對象封裝類
*/
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
return REST_TEMPLATE.postForEntity(url, requestBody, responseType, uriVariables);
}
/**
* POST請求調用方式
*
* @param url 請求URL
* @param requestBody 請求參數體
* @param responseType 返回對象類型
* @param uriVariables URL中的變量,與Map中的key對應
* @return ResponseEntity 響應對象封裝類
*/
public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Map<String, ?> uriVariables) {
return REST_TEMPLATE.postForEntity(url, requestBody, responseType, uriVariables);
}
實戰(zhàn)示例
通過Swagger2調取controller層示例
-
請求示例
image 響應示例
接口測試用例通過extentreports生成測試報告
- 執(zhí)行resources下的testNG.xml生成測試用例報告
示例測試報告如下:
通過報告可以看到用例的總數,多少通過多少失敗,失敗的異常打印等信息。
-
接口的并發(fā)測試
測試單元ConcurrentTestCase類是測試并發(fā)的示例
根據入參參數設置并發(fā)量,測試結果如下:
簡單的寫了兩個示例,具體的實現還需根據自己的接口文檔去設計測試用例。
項目源碼傳送門:點擊獲取
- 更多測試技術分享、學習資源以及一些其他福利可關注公眾號:【Coding測試】獲?。?/em>