繼續上一篇的內容來講解,我們本篇主要對前面的代碼進行優化。主體思想就是對各種請求方法的二次封裝!
基於我們接口的特殊性處理:
-
無需鑒權
- POST /login username/password #登錄
- POST /register username/password/password_confirmation #用戶注冊
需要鑒權
- GET /api/tasks #獲取所有的task
- GET /api/tastks/:task_id #獲取id為task_id的task
- POST /api/tasks title/desc #創建task
- DELETE /api/tasks/:task_id #刪除id為task_id的task
- PUT /api/tasks/:task_id #完成id為task_id的task
接口鑒權要求,登錄系統后,服務器返回token,后續的所有請求必須都包含token,那么我們繼續來看。
本篇內容,我們對接口測試案例中的請求方法進行二次封裝,更加簡化,我們定義一個page目錄,新增一個類名,為page類,下面新增一個tasks.py文件:
1.首先封裝post請求,因為post請求只有注冊和登錄不需要鑒權,其他post接口都是需要鑒權才可以訪問的,所以這里面我們可以把headers設置為默認值參數,可以傳入參數也可以不必傳入參數。我們可以這么寫:
緊接着我們對get請求進行封裝:因為get請求只有一個,就是獲取所有任務,而且需求鑒權,所以,這里面我們可以實現如下方式:
ok,以此類推,后續的delete請求和post請求都是需要鑒權的,所以這里我們都可以按照如下這樣去寫:
改寫完畢以后,我們在接口測試用例中對所有原來的請求方式進行改寫,改寫完如下代碼:
def dirname(self,filepath='',filename='token'): '''定義目錄'''
return os.path.join(os.path.dirname(__file__),filepath,filename) def post(url,data,headers=None): ''' 對post請求進行二次封裝 :parameter url:請求地址 :parameter data:請求參數 ''' r = requests.post(url=url,json=data,headers=headers) return r def get(url,headers): ''' 對get請求進行二次封裝 :parameter:url:請求地址 :parameter:data:請求參數 ''' r = requests.get(url=url,headers=headers) return r def delete(url,headers=None): ''' 對 delete 請求進行二次封裝 :parameter:url:請求地址 :parameter:data:請求參數 ''' r = requests.delete(url=url,headers=headers) return r def put(url,headers=None): ''' 對 put 請求進行二次封裝 :parameter:url:請求地址 :parameter:data:請求參數 ''' r = requests.put(url=url, headers=headers) return r
然后我們把整個目錄架構做出如下調整: