繼上文我編寫了java的get請求與post請求之后,我現在開始寫一下實際操作
很多人有疑問,接口測試的代碼是哪里來的,怎么來的呢?看得見嗎?我來做一個簡單的演示
我們這里簡單介紹一下抓包工具,對於一般的app來說,可以使用fiddler來進行抓包測試具體的可以建立代理,分為以下步驟
1設定自己的測試手機和pc機器在同一個無線網之中
2pc機器打開fiddler,tool->fiddler options打開后在connections中設置端口號
3手機端進行如下圖的設置,ip為該機器的ip端口為剛剛設置的端口號
如此,手機上的東西一旦發起網絡請求,數據包就會顯示在fiddler上了,至於pc端,我用的是charles,一般下載一個破解版也就ok了~~與手機端很相近
我們一般抓到的數據包是這樣的
上圖是charles抓到的數據包,overview中里面很明顯的看出來是get還是post請求,但是詳細的參數和header就在第二張圖contents中
在contents中可以看到傳的參數,在header中也可以看到所需要傳輸的header值,下面是我們的返回參數
實際上,運用我們現在的代碼即可完成這個操作,這就是自動化代碼的能力,發一下http請求,針對上圖,我們把url從overview中拿出來,再把header和view中的數值全部填充上即可,具體代碼如下
url="http://xxxx";
applyParams = new HashMap<String, Object>();
applyParams.put("courseId",courseIdbig);
applyParams.put("xesClasses[0].nickName", Util.strTime6());
applyParams.put("xesClasses[0].tutorName",tutorName);
applyParams.put("xesClasses[0].tutorId",x);
applyParams.put("xesClasses[0].maxPersons","40");
applyParams.put("xesClasses[0].areaId","ff8080812e19f4bd012e23a921795499");
applyParams.put("xesClasses[0].serviceCenterId","ff8080814932e6a101493c0e6e2d1b73");
applyParams.put("xesClasses[0].venueId","ff808081494b24f60149545dd2b918d9");
applyParams.put("xesClasses[0].classRoomId","ff808081494b24f60149545fed0e18e3");
applyParams.put("xesClasses[0].teacherConflict","0");
applyParams.put("xesClasses[0].roomConflict","1");
httpDoGet.doPost(url, applyParams, Cookie).toString();
是的,只要有了上文的基礎可以很簡單的進行這個模擬操作
總得來說,對我們而言,上文是我們接口測試的一個方法,也是我們一個常態化的方法,,,
接口測試的話,主要是依照接口文檔來做的(官方說法),接口文檔與我們這個相比,還不如這個方法來的靠譜,,,因為文檔的參數沒有數值,而我們這里有數值,另一方面,我們可以想象,對一個寫代碼的人來說,編寫自己的代碼的文檔來介紹自己的代碼是很枯燥的事情文檔更是如此,所以接口文檔一般錯誤都是存在的
所以在熟悉業務的基礎上,如果從接口文檔中沒法調通接口,這個時候要用這個方法,比如要測試創建訂單的接口的話,我們就手動創建一個訂單,抓取數據包后利用這個方法就可以作了~
在另一個場景也常常用到該方法,就是我所說的自動化工作中(非測試)
這時候開發沒有義務配合你的工作,沒有文檔啥都沒有,只有手動操作的賬號,,,我們只能這樣做,但是通過自己這樣的方式,寫出來的代碼,真的很有成就感~