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

前言

無論是自動化測試還是自動化部署,擼碼肯定少不了,所以下面的基于java語言的接口自動化測試空免,要想在業(yè)務(wù)上實現(xiàn)接口自動化,前提是要有一定的java基礎(chǔ)盆耽。
如果沒有java基礎(chǔ)蹋砚,也沒關(guān)系。這里小編也為大家提供了一套java基礎(chǔ)精講視頻(雖然年代有點(diǎn)久2017摄杂,但是講解內(nèi)容絕對干貨坝咐,小編看了很多的基礎(chǔ)視頻唯有這一套講解到位)由于視頻較大,放到了某盤上析恢,后臺回復(fù)關(guān)鍵字【java】即可獲取墨坚。

進(jìn)入主題

使用技術(shù)
  • Spring Boot
  • mybatis
  • testng
  • Swagger2
  • extentreports
  • httpclient(這里抽取了一些方法非常好用)
  • log4j2

項目結(jié)構(gòu)

  • 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請求調(diào)用方式
     *
     * @param url          請求URL
     * @param responseType 返回對象類型
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public static <T> ResponseEntity<T> get(String url, Class<T> responseType) {
        return REST_TEMPLATE.getForEntity(url, responseType);
    }

    /**
     * GET請求調(diào)用方式
     *
     * @param url          請求URL
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public static <T> ResponseEntity<T> get(String url, Class<T> responseType, Object... uriVariables) {
        return REST_TEMPLATE.getForEntity(url, responseType, uriVariables);
    }

// ----------------------------------POST-------------------------------------------------------

    /**
     * POST請求調(diào)用方式
     *
     * @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請求調(diào)用方式
     *
     * @param url          請求URL
     * @param requestBody  請求參數(shù)體
     * @param responseType 返回對象類型
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType) {
        return REST_TEMPLATE.postForEntity(url, requestBody, responseType);
    }

    /**
     * POST請求調(diào)用方式
     *
     * @param url          請求URL
     * @param requestBody  請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量映挂,按順序依次對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    public static <T> ResponseEntity<T> post(String url, Object requestBody, Class<T> responseType, Object... uriVariables) {
        return REST_TEMPLATE.postForEntity(url, requestBody, responseType, uriVariables);
    }

    /**
     * POST請求調(diào)用方式
     *
     * @param url          請求URL
     * @param requestBody  請求參數(shù)體
     * @param responseType 返回對象類型
     * @param uriVariables URL中的變量泽篮,與Map中的key對應(yīng)
     * @return ResponseEntity 響應(yīng)對象封裝類
     */
    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調(diào)取controller層示例



  • 請求示例


    image
  • 響應(yīng)示例

接口測試用例通過extentreports生成測試報告
  • 執(zhí)行resources下的testNG.xml生成測試用例報告
    示例測試報告如下:

通過報告可以看到用例的總數(shù),多少通過多少失敗柑船,失敗的異常打印等信息帽撑。

  • 接口的并發(fā)測試
    測試單元ConcurrentTestCase類是測試并發(fā)的示例
    根據(jù)入?yún)?shù)設(shè)置并發(fā)量,測試結(jié)果如下:


簡單的寫了兩個示例鞍时,具體的實現(xiàn)還需根據(jù)自己的接口文檔去設(shè)計測試用例亏拉。
項目源碼傳送門:點(diǎn)擊獲取


  • 更多測試技術(shù)分享扣蜻、學(xué)習(xí)資源以及一些其他福利可關(guān)注公眾號:【Coding測試】獲取:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末及塘,一起剝皮案震驚了整個濱河市莽使,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷蛹,老刑警劉巖吮旅,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異味咳,居然都是意外死亡庇勃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門槽驶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來责嚷,“玉大人,你說我怎么就攤上這事掂铐『狈鳎” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵全陨,是天一觀的道長爆班。 經(jīng)常有香客問我,道長辱姨,這世上最難降的妖魔是什么柿菩? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮雨涛,結(jié)果婚禮上枢舶,老公的妹妹穿的比我還像新娘。我一直安慰自己替久,他們只是感情好凉泄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚯根,像睡著了一般后众。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颅拦,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天吼具,我揣著相機(jī)與錄音,去河邊找鬼矩距。 笑死,一個胖子當(dāng)著我的面吹牛怖竭,可吹牛的內(nèi)容都是我干的锥债。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哮肚!你這毒婦竟也來了登夫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤允趟,失蹤者是張志新(化名)和其女友劉穎恼策,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潮剪,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涣楷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抗碰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮斗。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弧蝇,靈堂內(nèi)的尸體忽然破棺而出碳褒,到底是詐尸還是另有隱情,我是刑警寧澤看疗,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布沙峻,位于F島的核電站,受9級特大地震影響两芳,放射性物質(zhì)發(fā)生泄漏摔寨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一盗扇、第九天 我趴在偏房一處隱蔽的房頂上張望祷肯。 院中可真熱鬧,春花似錦疗隶、人聲如沸佑笋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋纬。三九已至,卻和暖如春坚弱,著一層夾襖步出監(jiān)牢的瞬間蜀备,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工荒叶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碾阁,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓些楣,卻偏偏與公主長得像脂凶,于是被迫代替她去往敵國和親宪睹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351