• 接口测试平台开发之接口开发(login、logout、parameter、register)


    项目前端代码starrysky在D:api_platform下,先从登录开始开发
    第一步:去earthMjz这个项目的example目录下找到views.py文件,拷贝LoginView这个类到sksystem下views.py文件,再拷贝example目录下views.py里的一堆导入信息到views.py文件,views.py里的代码如下图:

    第二步:然后在sksystem下新建一个forms.py文件,然后去example目录下找到forms.py文件,拷贝LoginForm到sksystem下的forms.py文件里,然后再拷贝example目录下forms.py里的一堆导入信息到forms.py文件,forms.py里的代码如下图:

    第三步:配置sksystem目录下的urls.py文件,新增代码path('login', views.LoginView.as_view())
    第四步:去earth下的settings.py文件里配置redis,更改成牛牛的数据库ip和密码,如下图:

    然后在修改一下NO_LOGIN_LIST,加一个api,如下图:

    接下来用postman去请求登录接口,post方式,路径是/api/login,先不传usernamepassword,点击Send按钮,提示如下图:

    然后传入usernamepassword,报如下错误:

    于是把密码53f56dd793a46bb396893b20c29741ad放到数据库里,再次请求,如下图:

    登录成功后去redis里找到该token,完全一致,接下来实现退出,拷贝example下views.py里的LogoutView类里的代码到sksystem下的views.py文件里,如下图:

    然后在urls.py文件里新增path('logout', views.LogoutView.as_view()),接下来通过postman请求退出接口,配置如下图:

    然后去redis里看之前登录成功的token被删除了,退出逻辑实现了
    登录完成后写全局参数的接口,代码对接到平台上,首先在views.py里定义一个
    ParameterView类,继承NbView,NbView里封装了五个类,BaseView, GetView, PostView, DeleteView, PutView,自动的实现了增删改查的功能,首先实现get请求,获取BaseView类中的前四个字段search_fieldfilter_fieldmodel_classform_class,全局参数的接口如下图:

    修改model_class = models.Parameter,然后在forms.py里添加一个ParameterForm类,继承ModelForm和ExtendForm,然后去example下的forms.py中复制

    class Meta:
    model = models.Author
    exclude = ['is_delete']

    然后把Author改成Parameter,ParameterForm类里的代码如下图:

    然后修改form_class = forms.ParameterForm,views.py里的代码如下图:

    然后配置url,urls.py里新增的代码如下图:

    settings.py文件里的NO_LOGIN_LIST里有几个路径,这些路径不需要登录,不需要校验token,'api'在NO_LOGIN_LIST里,因此不需要传token,配置请求如下图:

    把NO_LOGIN_LIST里的'api'去掉,再请求全局参数的时候就要求校验token,如下图:

    接下来调一下登录接口获取token,登录成功后去redis里看,成功生成了token,然后再请求全局参数,请求成功如下图:

    接下来进入前端,退出后用手机号(13800138000)和密码(123456)进行登录,登录成功后进入星瀚的页面,点击2.0版本,可以看到6个接口:全局参数项目管理接口管理用例管理用例结合测试报告,全局参数接口继承了NbView,具有增删改查的功能,由于查没有根据哪个字段查,所以修改search_field = ['name'],先把starrysky的服务停掉,点击全局参数,再点击添加按钮,在弹出页面里输入如下图,点击确定按钮,报错:

    先通过post把增加、删除、修改和模糊查询实现了,如下图:

    用postman请求可以增加成功,postman的配置如下图:

    删除也OK了,id=3的is_delete变成0了

    修改的也OK了,配置如下图:

    接下来测试查询,因为之前设置过search_field = ['name'],配置如下图:

    这个报错的解决方式是在earth的middlewares.py里的PutMethodMiddleware类里增加一行,如下图:

    然后在前端页面2.0版本全局参数里新增成功、修改也ok、查询也没有问题,删除也实现了,接下来把注册接口开发一下,点击注册按钮的时候,报如下错误:

    首先配一下url,在urls.py里新增path('register', views.RegisterView.as_view()),然后在forms.py里新增如下图:

    注册不需要删改查,继承BaseViewPostView就行,但是和PostView里的代码逻辑不太一样,于是把PostView里的post方法拷过来如下图:

    因为还继承了BaseView,但是不涉及查询,所以把去BaseView里把model_class = Noneform_class = None拷过来,接下来修改代码,把model_class = models.User,因为注册和User表有关联,还要定义一个RegisterForm在forms.py文件里,RegisterForm的代码如下图:

    然后修改form_class = forms.RegisterForm,到这里BaseView配置完成了,修改后的代码如下图:

    打印出的注册信息及密码分别如下:

    {'phone': '12320202022', 'email': '12320202022@163.com', 'password': '123456', 'username': 'dsx'}
    123456

    接下来将密码加密写入到数据库中,中间还得经过一步,更新原有的cleaned_data,post方法中修改如下图:

    将最终的注册信息写入到数据库中,代码如下图:

    点击注册按钮,提示注册成功,跳转到登录页面,在数据库中看到注册成功的信息,如下图:

    注册接口开发成功,注册的phoneemailpasswordusername成功插到数据库里,如果phone和email已经注册过,会报如下的错误:

  • 相关阅读:
    Java并发/多线程-线程池的使用
    pam详解
    chrony时间同步服务
    网站每日UV数据指标去重统计
    阻塞式发送邮件
    待办事项-redis
    解决Windows7、Windows10 ping不通的问题
    redis序列化和反序列化的操作-(以前咋操作我都忘记了)
    秒杀活动下的公平队列抢购机制
    控制某个字段不在页面展示
  • 原文地址:https://www.cnblogs.com/laosun0204/p/12507636.html
Copyright © 2020-2023  润新知