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

Posted 曲鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化测试平台:开发用户认证接口相关的知识,希望对你有一定的参考价值。

一、前言

对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过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或者jmeter携带接口参数(这里以jmeter举例)进行请求:


请求结果



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


三、总结

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

关于如何进行redis认证可以参考教程《【DRF】django restframework如何使用redis来做token认证》 进行学习。





关注公众号 【曲鸟讲测试开发】,回复:python
👇🏻获取《21天学通Python》教程,还有更多测开、Python知识分享👇🏻

以上是关于自动化测试平台:开发用户认证接口的主要内容,如果未能解决你的问题,请参考以下文章

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

Flask 编写http接口api及接口自动化测试

夺命雷公狗---微信开发12----微信公众平台接口测试帐号

支持案例自动生成功能的接口自动化测试平台

微信推送信息功能

python自动化自动化测试平台开发:6.后端开发之用例报告的上传