開源接口測試框架之公司應用篇
最近一段時間,筆者一直在和我們公司的研發童鞋,運維童鞋等一起努力來搞我們公司的接口,每晚的那個點我們就開始了我們的工作,由於是後期補做,所以在時間上也是那麽匆忙,閑暇之余,筆者想著怎麽對接口進行詳細的功能測試,需要進行一系列的工作,來簡化我們測試的工作量,要做的太多,只可惜我們測試太少,精力有限。可是我們老大讓我們做的很多。哎,啥都別說了,還是專心的做自己工作吧,
本來想著調研網上很多的工作呢,或者別人的開源框架呢,後來想想自己之前也做過這麽的一個的工具,於是乎,我就開始對自己這個接口框架進行了改版,針對我們公司的接口進行了詳細的梳理,其實我們的接口和市面上的很多接口其實還是很相似的。都是http請求,格式還是json的格式,這對於我來說是很開心的,和我當初的接口開源的框架來說的初衷是一樣的,這樣一來就可以節省我一大部分時間,少去了代碼封裝等一系列的問題,節省了一大部分的時間,現在要做的就是把這個框架怎麽能更快的代入到我們的測試中,也就是對開源的測試框架進行簡單的改裝,使之滿足我們日常的測試工作,降低我們的研發成本。
雖然整個框架是我自己開發的,自己設計的,並且得到了很多讀者的反饋,但是在最初想引進我們公司的測試的過程中呢,我還是對這個框架進行了一次代碼上的重新閱讀,梳理了框架的點,然後對我們公司的現有的接口進行了梳理,其實我之前開源的框架沒有考慮到切換環境這個情況,實際我們公司的接口是有環境的切換,在我們的接口的測試文檔上面給了接口的url地址的變化的規律,其實針對我們的app的接口,我們就是baseurl+路徑來處理的,然後看了下我們接口文檔,對於請求頭我們公司有著自己的設計,還有對傳遞的參數我們公司的也進行的規定,我進行了梳理,梳理後,對比我的接口測試框架的進行了改造。
關於測試環境的切換
解決了環境切換的問題呢,接下來我們要做的就是對測試框架整體的腳本進行重構,其實主要是對一些封裝的腳本上的重構。
關於requests的封裝的改進如下。
# -*- coding: utf-8 -*-# @Author : leizi import requests,json from common.log import LOG,logger @logger(‘請求‘) class reques(): def get(self, url,headers,params):#get消息 try: r = requests.get(url, headers=headers,params=params) r.encoding = ‘UTF-8‘ json_response = (r.json()) return json_response except Exception as e: LOG.info(‘測試出錯了,原因:%s‘%e) return {} def post(self, url, params,headers):#post消息 try: r =requests.post(url=url,data=params,headers=headers) json_response = r.json() return json_response except Exception as e: LOG.info(‘測試出錯了,原因:%s‘ % e) def delfile(self,url,params,headers):#刪除的請求 try: del_word=requests.delete(url=url,params=params,headers=headers) json_response=json.loads(del_word.json()) return json_response except Exception as e: LOG.info(‘測試出錯了,原因:%s‘ % e) print(‘del請求出錯,原因:%s‘ % e) return {} def putfile(self,url,params,headers):#put請求 try: data=json.dumps(params) me=requests.put(url,data) json_response=me.json() return json_response except Exception as e: LOG.info(‘測試出錯了,原因:%s‘ % e) print(‘put請求出錯,原因:%s‘%e) return {}
在改裝後的requests的後,有對其進行進一步的封裝。
from common.test_requests import reques reques=reques() def testapi(url,connent,key,fangshi): if fangshi==‘POST‘or fangshi ==‘post‘: me=reques.post(url=url,params=connent,headers=key) return me elif fangshi=="GET" or fangshi==‘get‘: me=reques.get(url=url,headers=key,params=connent) return me else: pass
有人會問我你怎麽就封裝了這麽幾個簡單的方法呢,其實呢,因為我們公司的就接口目前就已經能夠滿足我們基本的使用。
經過改寫後,然後我有對整個框架進行了一次的調試,在調試中,發現對case的文件裏面發生著不一樣,於是乎,有對case文件進行了進一步的優化,這裏就不在放置case文件了,因為牽涉到公司的。 通過最後的調試,發現整體的架構已經完成,
接下來就是寫用例運行框架就可以。
那麽我來總結下,我對接口框架的引入的過程進行了梳理。
第一,用一則腳本代碼先對公司的某一接口進行測試,腳本語言為你或者你部門熟悉的。目的,了解你們公司的接口所需要的參數以及一些需要傳遞的準確的信息。
第二,梳理公司整體的接口,看是否都是一類的,比如基於baseurl+路徑,請求方式。等。
第三,尋找適合自己公司的接口測試開源測試框架,可以去testerhome,github等網站去找,
第四 通讀框架的代碼,找出框架與公司接口測試所用到的不同點。
第五,修改框架,對不同點,對於好的地方進行修改,滿足公司的接口測試工作需求,
第六,增加自己想要的內容,定制化本公司特色需求
第七,調試,每次腳本的開發,優化過程,一定不要忘記調試,代碼的調試很重要。
第八,編寫測試用例,運用框架進行接口測試。
第九,總結框架文檔,包括使用文檔,同時培訓本部門的內部使用,
第十,總結整個過程,並且對老大進行匯報,及時維護跟進測試框架的使用情況。
以上步驟有一定的先後順序,但是不一定都要用,這些都是我基於我自己的對開源的接口測試框架引用過程中的總結。實際情況中去改進我們的整個流程和環節。
有疑問可以加我95294386 或者我的qq群194704520
希望大家一起從菜鳥飛到更高的地方,
有錢的也可以給我捧下
開源接口測試框架之公司應用篇