靈活輕巧的java接口自動化測試實戰(zhàn)

前言

無論是自動化測試還是自動化部署,擼碼肯定少不了,所以下面的基于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>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容