自动化测试平台(二):开发用户认证接口

news2024/11/16 19:41:23

 一、前言

对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过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()  # 删除原来的token
        token = Token.objects.create(user=user)  # 创建新的token
        return Response(data={'msg': '登录成功!', 'token': token.key})  # 返回登录信息及token
    return Response(data={'msg': '用户名或错误!'}, status=status.HTTP_401_UNAUTHORIZED)


5)指定路由url

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

from django.urls import path
from user.views import login

app_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 include

urlpatterns = [
    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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源在下方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Renderbus瑞云渲染正式支持UE云渲染!离线渲染+实时渲染=渲染起飞!

2022年已经到了尾声,回顾今年CG圈里最具讨论性的话题,除了AI绘图,就是虚幻引擎了,这两者如同一股风潮,从概念创意到后期制作,一路以“席卷”之势影响到了视觉领域的各个行业。 Renderbus瑞云渲染农场作为亚…

CMake中add_custom_target的使用

CMake中的add_custom_target命令用于添加一个没有输出的target,以便始终构建它,其格式如下: add_custom_target(Name [ALL] [command1 [args1...]][COMMAND command2 [args2...] ...][DEPENDS depend depend depend ... ][BYPRODUCTS [files…

vue中使用visibilitychange事件来获取页面当前可见性

前言 在系统中,如果有打开新页面进行相关操作,若是有关联操作就需要通过判断页面的可见性来进行后绪的操作 一、触发visibilitychange变更的情况 页面的可见性有三个层面 页面可见时,用户关闭 Tab 页或浏览器窗口。页面可见时&#xff0c…

ASP.NET Zero Core系统配置工具

ASP.NET Zero Core系统配置工具 ASP。NET Zero是具有现代复杂应用程序连接的新web应用程序的起点。使用高级页面和强大的下属,您将能够从您的时间中受益。您可以使用ASP.NET ZERO作为基础程序,直接开始开发自己的代码和业务。 ASP.NET ZERO工具选项和功能…

sklearn中的特征选择feature_selection

特征选择 概念:就是从所有的特征中,选择出有意义,对模型有帮助的特征,以避免必须将所有特征都导入模型去训练的情况。特征选择常用的方法有:过滤法,嵌入法,包装法,和降维算法 过滤…

BN128曲线

1. 引言 BN系列椭圆曲线E(Fp):y2x3b,其中b≠0E(\mathbb{F}_p):y^2x^3b,其中b\neq 0E(Fp​):y2x3b,其中b​0,由Paulo S. L. M. Barreto1 和 Michael Naehrig 在2005年论文 Pairing-Friendly Elliptic Curves of Prime Order中首…

增长思维 —— 撬动企业增长的杠杆

增长一定不是只适用于互联网公司 营销:获客 增长:研究的是用户全生命周期 增长思维:以供需分析为基础,从用户全生命周期寻找增长点的方法论 这个模型的核心是啊哈时刻,指的是一个产品对用户价值感最强的那个点 一个…

画饼画到世界地图上:按比例呈现多组数据

地图是数据可视化的一部分,做群体遗传学、动物学、植物学、微生物学等的朋友经常用到世界地图,比如绘制不同小麦品种的世界分布。一般情况下,我们根据经纬度将数据标注在地图上,然而有些时候,我们会需要更高级的标注&a…

Apache doris 1.2.0 release

亲爱的社区小伙伴们,再一次经历数月的等候后,我们很高兴地宣布,Apache Doris 于 2022 年 12 月 7 日迎来 1.2.0 Release 版本的正式发布!有近 118 位 Contributor 为 Apache Doris 提交了超 2400 项优化和修复,感谢每一…

Ubuntu 22.04 桌面美化之Mac Big Sur风格

Ubuntu 默认的桌面也是一个不错的样式,但千篇一律的主题很容易让人疲惫。本文描述了如何通过安装 gnome 桌面主题和动画,使桌面趋向于 Mac 的样式。 美化后的样式如下,请参考: 一、主题和图标美化 1.1 安装 tweaks 打开终端&…

抽奖小程序怎么做?

抽奖小程序怎么做?大概需要多少钱? 价格方面,平台按年收费,一年1498至2498元。 明码标价,7天退款制度,随时退。 抽奖小程序怎么做步骤: 1.进入第三方抽奖小程序制作平台官网注册账号并登录。 抽奖小程…

Kubernetes集群安装卸载

生命无罪,健康万岁,我是laity。 我曾七次鄙视自己的灵魂: 第一次,当它本可进取时,却故作谦卑; 第二次,当它在空虚时,用爱欲来填充; 第三次,在困难和容易之…

银河麒麟服务器系统V10开启root用户自动登录的图文教程

HI,最近公司拿回来一个联想服务器,配置还可以啊,所以就想着在本地搭建一套常用的测试环境,但是这个服务器是扁平的,不像是主机那样,这种是锁定在主机箱上的,而且噪音很大,一直嗡嗡嗡的,所以打算弄好之后放在离我远一些的地方,不然真的没法工作,全是噪音,系统都部署…

transformer14

太强了都连载14了~~ 这次是无残差连接或归一化层,也能成功训练深度 尽管取得了很多显著的成就,但训练深度神经网络(DNN)的实践进展在很大程度上独立于理论依据。大多数成功的现代 DNN 依赖残差连接和归一化层的特定排列&#xff…

ROS多机通信(ssh控制)

这种方法需要在局域网范围内进行,通信距离取决于WIFI模块的传播距离 1、连接同局域网 将主机和从机连接相同的网络,在同一局域网内。例如192.168.0.*(前三位相同) 网络会自动给每个机器一个IP 2、安装SSH sudo apt-get insta…

SpringBoot自动配置的原理-@SpringBootApplication

文章目录1自动配置原理1.1 SpringBootConfiguration1.2.ComponentScan1.3 EnableAutoConfiguration2 为什么不使用 Import 直接引入自动配置类学完这篇文章,可以了解到 SpringBoot 自动配置原理1自动配置原理 SpringBootConfiguration 是一个组合注解,由…

Pinely Round 1 (Div. 1 + Div. 2) E.Make It Connected(思维题/并查集+分类讨论)

题目 n(n<4e3)个点不包含自环和重边的无向图&#xff0c; 你可以执行以下操作若干次&#xff1a; 1. 选择一个点u 2. 对于每个点v(v≠u)来说&#xff0c;若u、v之间当前有一条边相连&#xff0c;则断开这条边&#xff0c; 否则在u、v之间加一条边&#xff0c;使之相连 …

C++Mysql8.0数据库跨平台编程实战(下)

CMysql8.0数据库跨平台编程实战&#xff08;下&#xff09;第六章 跨平台中文乱码问题和mysql锁1、MySQLAPIC封装策略和方法说明windows上字符集gbk和utf8互转开始写代码把测试框架搭起来linux上字符集GBK和UTF8互转ZPMysql库添加字符集转换函数并测试GBK插入utf-8的数据我们把…

Android之Zygote(下)--- SystemServer详解

SystemServer是由zygote.forkSystemServer函数fork出来的子进程&#xff0c;forkSystemServer是一个native函数&#xff0c; /dalvik/vm/native/dalvik_system_Zygote.c static void Dalvik_dalvik_system_Zygote_forkSystemServer(const u4* args, JValue* pResult) {pid_t …

ABAP学习笔记之——第十章:面向对象ALV

一、ALV ALV 是 ABAP List Viewer 的缩写&#xff0c;是实际业务中查询数据或修改数据时经常使用的程序。 1、ALV的主要功能排序功能 (Ascending/Descending); 过滤设置; 变更列宽; 变更布局; ABC 分析; 下载 Excel及 Word 文档的保存。 2、ALV的类型 Function ALV; …