自动化测试平台(二):开发用户认证接口
创始人
2024-03-27 18:18:39
0

 一、前言

对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过DRF来快速的做一个用户登录的验证接口。


二、验证登录讲解

1)创建用户

进入django的项目目录,执行下面的命令进行用户的创建:

python manage.py createsuperuser --email admin@example.com --username admin

按照提示一步一步设置用户的密码和其他信息即可:


用户创建成功后,会在数据库的auth_user表中看到该用户的记录:


2)开发登录接口

1)django项目目录结构创建

在django项目根目录下执行如下命令,创建一个用户相关的app:

django-admin startapp user


 2)注册app到配置项中

user加入settings.py中的INSTALLED_APP列表中,完整的INSTALLED_APP内容如下:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','user','rest_framework','rest_framework.authtoken'
]

3)定义接口说明

对于我们这个登录接口而言,需要用户传递两个参数:用户名、密码 ,接口路径和传参要求如下:


接口地址:/user/login

请求方法: POST

传参要求:

{"user_name":"admin","password":"123456"  #这里是你创建用户时设置的密码
}

4)开发接口

接口说明给出后,我们就可以开发对应的接口了,在views.py 文件中输入如下代码:

from django.contrib.auth import authenticate
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.authtoken.models import Token@api_view(['POST'])  # 列表中的元素代表支持哪些请求方法
def login(request):"""登录接口"""# 验证用户帐号密码的内置方法user = authenticate(username=request.data['username'], password=request.data['password'])if user:Token.objects.filter(user_id=user.id).delete()  # 删除原来的tokentoken = Token.objects.create(user=user)  # 创建新的tokenreturn Response(data={'msg': '登录成功!', 'token': token.key})  # 返回登录信息及tokenreturn Response(data={'msg': '用户名或错误!'}, status=status.HTTP_401_UNAUTHORIZED)

5)指定路由url

1.在user文件夹新增文件urls.py,并增加如下代码:

from django.urls import path
from user.views import loginapp_name = "accounts"urlpatterns = [path('login', login),  # 代表请求接口路径
]

6)主入口配置路由前缀

1.在QNtest下的urls.py文件中:


增加如下代码:

from django.contrib import admin
from django.urls import path
from django.urls import includeurlpatterns = [path('admin/', admin.site.urls),path('user/', include('user.urls', namespace='user')),
]

目的是将user app的路由注册到这里,并增加接口地址前缀user/


7)验证效果

启动项目后,通过postman (postman传参格式记得选json) 或者jmeter携带接口参数(这里以jmeter举例)进行请求 (帐号密码用你创建时输入的)


请求结果



至此我们已经完成了一个用户登录验证的接口了。


三、总结

在我们实际的应用场景中,用户登录成功后还需要去查询用户的一些信息(姓名、性别、邮箱、角色、用户名、地址等),上面代码实现的token验证和登录都是基于mysql数据库的,查询用户信息的话也是走mysql库中进行获取,每次涉及权限校验和验证的接口就都需要查一次库,这样请求量大了后会对数据库增加不少的压力,我们可以通过redis来做登录的信息验证并将用户信息存入到redis中,来提高性能。

资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

面试资料

我们学习软件测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作

​这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源在下方

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...