继续上一篇的内容来讲解,我们本篇主要对前面的代码进行优化。主体思想就是对各种请求方法的二次封装!
基于我们接口的特殊性处理:
-
无需鉴权
- 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
然后我们把整个目录架构做出如下调整: