基於java的直線型介面測試框架初探
阿新 • • 發佈:2019-09-06
在使用java語言作為介面測試的過程中,發現java語言的簡潔性的確不如指令碼語言,如python,很多功能python一行程式碼幾個方法就能搞定,java需要幾行,而且有時候並不利於理解。最近接觸到了一個詞“直線型”程式碼。看了之後有所感覺,重新寫了一個直線型程式碼風格的介面請求框架。
原始碼如下:
package com.fun.frame.httpclient import com.fun.base.bean.RequestInfo import com.fun.config.RequestType import net.sf.json.JSONObject import org.apache.commons.lang3.StringUtils import org.apache.http.Header import org.apache.http.client.methods.HttpRequestBase import org.slf4j.Logger import org.slf4j.LoggerFactory /** * 重寫FanLibrary,使用面對物件思想 */ public class FunRequest extends FanLibrary { static Logger logger = LoggerFactory.getLogger(FunRequest.class) /** * 請求型別,true為get,false為post */ RequestType requestType /** * 請求物件 */ HttpRequestBase request /** * host地址 */ String host /** * 介面地址 */ String apiName /** * 請求地址,如果為空則由host和apiname拼接 */ String uri /** * header集合 */ List<Header> headers = new ArrayList<>() /** * get引數 */ JSONObject args = new JSONObject() /** * post引數 */ JSONObject params = new JSONObject() /** * json引數 */ JSONObject json = new JSONObject() /** * 構造方法 * * @param requestType */ private FunRequest(RequestType requestType) { this.requestType = requestType } /** * 獲取get物件 * * @return */ public static FunRequest isGet() { new FunRequest(RequestType.GET) } /** * 獲取post物件 * * @return */ public static FunRequest isPost() { new FunRequest(RequestType.POST) } /** * 設定host * * @param host * @return */ public FunRequest setHost(String host) { this.host = host this } /** * 設定介面地址 * * @param apiName * @return */ public FunRequest setApiName(String apiName) { this.apiName = apiName this } /** * 設定uri * * @param uri * @return */ public FunRequest setUri(String uri) { this.uri = uri this } /** * 新增get引數 * * @param key * @param value * @return */ public FunRequest addArgs(Object key, Object value) { args.put(key, value) this } /** * 新增post引數 * * @param key * @param value * @return */ public FunRequest addParam(Object key, Object value) { params.put(key, value) this } /** * 新增json引數 * * @param key * @param value * @return */ public FunRequest addJson(Object key, Object value) { json.put(key, value) this } /** * 新增header * * @param key * @param value * @return */ public FunRequest addHeader(Object key, Object value) { headers << getHeader(key.toString(), value.toString()) this } /** * 新增header * * @param header * @return */ public FunRequest addHeader(Header header) { headers.add(header) this } /** * 批量新增header * * @param header * @return */ public FunRequest addHeader(List<Header> header) { header.each { h -> headers << h } this } /** * 增加header中cookies * * @param cookies * @return */ public FunRequest addCookies(JSONObject cookies) { headers << getCookies(cookies) this } /** * 獲取請求響應,相容相關引數方法,不包括file * * @return */ public JSONObject getResponse() { if (StringUtils.isEmpty(uri)) uri = host + apiName switch (requestType) { case RequestType.GET: request = FanLibrary.getHttpGet(uri, args) break case RequestType.POST: request = !params.isEmpty() ? FanLibrary.getHttpPost(uri + changeJsonToArguments(args), params) : !json.isEmpty() ? getHttpPost(uri + changeJsonToArguments(args), json.toString()) : getHttpPost(uri + changeJsonToArguments(args)) break } headers.each { x -> request.addHeader(x) } return getHttpResponse(request) } /** * 獲取請求物件 * * @return */ public HttpRequestBase getRequest() { logger.debug("請求資訊:{}",new RequestInfo(this.request).toString()) this.request } @Override public String toString() { JSONObject.fromObject(this).toString() } }
使用方法如下:
public static void main(String[] args) { JSONObject response = FunRequest.isGet() .setHost("www.funtester.cn") .setApiName("/test") .addArgs("uname", "FunTester") .addArgs("passoword", "FunTester") .addArgs("type", "FunTester") .addHeader("token", "FunTester") .addCookies(getJson("login=false")) .getResponse(); output(response); FanLibrary.testOver(); }
技術類文章精選
- java一行程式碼列印心形
- Linux效能監控軟體netdata中文漢化版
- 介面測試程式碼覆蓋率(jacoco)方案分享
- 效能測試框架
- 如何在Linux命令列介面愉快進行效能測試
- 圖解HTTP腦圖
- 如何測試概率型業務介面
- httpclient處理多使用者同時線上
- 將swagger文件自動變成測試程式碼
- 五行程式碼構建靜態部落格
- httpclient如何處理302重定向
- 基於java的直線型介面測試框架初探