接口测试平台代码实现12:用户管理系统的后台代码-登录

简介: 上节,我们尝试制作了一个登陆页面前端,有的小伙伴反馈说有点跟不上前端开发这块,这是正常的,而且公众号又不是什么直播课程,是没有跟不跟的上之说,哪怕一周敲出来一节课的内容也无所谓。不过的确前端开发对我们测试来说一直是一块黑洞,很少有人掌握这里的技术,或者说我们做出来的东西有点丑,不过这正常,如果好看的话,基本都去做前端开发了。

 本节课我提前美化了一下登陆页面,毕竟这是公司同事首次进入绕不开的第一印象,打磨的精致一点,会给人整个平台的质量都很高的赶脚。这里直接上优化后的代码和页面了:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试平台登录</title>
    <style>
         body{
            background: url("/static/login.jpg");
            background-attachment: fixed;
            background-size: cover;
        }
        .wqrf_input{
            width: 90%;
            background-color: #d1d0d1;
            border-radius: 50px;
            text-align: center;
            float: right;
            margin-right: 10px;
            height: 30px;
            border: 0;
        }
        span{
            color: #f25e78;
        }
</style>
</head>
<body>
<br>
    <div style="box-shadow: 4px 4px 6px #2a262a;margin-left: -webkit-calc(50% - 150px);width: 300px;background-color: white; opacity:0.8;border-radius: 20px;text-align: center">
        <br>
        <strong><span style="font-size: xx-large;">接口测试平台</span></strong>
        <br>
        <span>欢迎使用</span>
        <br><br>
            <input type="text" class="wqrf_input" placeholder="用户名">
            <br><br>
            <input type="text" class="wqrf_input" placeholder="密码">
        <br><br><br>
        <button style="width: 90%;height: 35px;border-radius: 50px;background-color: #f25e78;color: white;font-size: large;border: 0;box-shadow: 4px 4px 4px #a0a0a0">登 陆</button>
        <br><br>
        <span style="font-size: xx-small">若首次登录,请点击 <a href="">注册账号</a></span>
        <br><br>
    </div>
</body>
</html>

页面展示:微信图片_20220616131435.png

   好了,正片开始,我们本节课要做的是登陆页面的后台代码,也就是 注册和登录。

   先弄个登陆吧:

打开login.html,找到你的登陆button,给它加上一个onclick属性,值为我们要做的js函数名:login微信图片_20220616131443.png

然后在文件底部加上一个script 标签用来存放login函数微信图片_20220616131448.png

在里面写好function login(){}

   小技巧:你输入fun联想出来之后,直接按tab键盘,它就会给你生成一个默认函数,然后你把名字改好就可以了,之前所有前端js出错,无效的,请仔细检查代码,或者加我给我截图 帮你改正细微问题,也可以自己f12打开浏览器调试,点击console,相当于我们执行js函数的命令窗口,查看各种报错然后修复。

   这个函数我们动笔之前,要思考,这个函数要做什么?

  1. 拿到用户名和密码输入框的值
  2. 把这个俩值传递给后端等待验证
  3. 根据验证结果,如果错误,就显示红色报错!嘲讽一下使用者。

   4.如果成功的话,那就轮不到这个函数干啥了,后端直接给返回新的首页了


所以第一步我们要如何拿到用户名和密码输入框的值?

首先要定位,然后拿value,怎么定位?用id最好,那就先给那俩输入框加上id,曾经我们做selenium自动化时候,经常埋怨开发不给加id让我们定位不好办,现在我们也是开发了,切记要养成习惯,加上id,方便我们自己。微信图片_20220616131643.png

然后在login()中 加上如下俩句,变量名可以随便起。获取到了俩个输入框的值,一个是username,一个是password微信图片_20220616131652.png

然后我们可以检验一下 是否正确。

加入alert('弹窗文案')        代码,来显示我们获取到的对不对,微信图片_20220616131656.png

然后我们刷新页面,记住一定要刷新,否则你的改动是不生效的。

然后输入用户名密码随便输入,点击登陆按钮:微信图片_20220616131702.png

微信图片_20220616131707.png

看样子是成功了!

       接下来就是我们要如何把俩个字符串 传送给我们后端了。

这里教一段非常简单好用的发送http请求的代码。

$.get("你的url",{json格式参数},function (ret){收到返回值后可以做的事})

其中的ret,就是你接收的返回值。

   但是这个$ 开头的写法,并不是js的写法,而是jquery的写法。我们直接使用会报错,所以要先下载并引入jquery。微信图片_20220616131936.png

我们想起一件事,就是我们之前下载菜单的时候,那个静态资源里已经有里jquery.min.js 类的文件,所以我们只需要引入即可,这里说一下,我们基本网上下载的资源,都是一整套js/css/jquery等。

   引入:在head标签内加入script标签,注意不要写到style内。

script这次内部夹的是空的,而要给它加入一个src属性,意为引入js

然后就是粘贴这个jquery.min.js的路径,注意一定要以 /static/...开头,前面的的都不要。然后加入type属性,写死为 text/javascript

   之后才算我们引入成功!微信图片_20220616131942.png

 先删除alert();然后加上这个发送http请求的代码:微信图片_20220616131948.png

然后在里面写上 url,参数,返回代码:微信图片_20220616131953.png

其中的url我习惯写的是页面进入的url加_action,大家可以自行设置

俩个参数,按照字典/json格式书写,用英文逗号隔开。最后收到返回值时,直接弹窗 报错文案。 因为如果是正确的话,我们打算在后台时候直接让用户跳转到其他页面比如首页。那么这个登陆页面也就不复存在了。

   然后我们去urls.py中架设好链接对照:微信图片_20220616132004.png

写了个函数名,尽量保持一致,以免后续我们思路混乱。

然后去views.py中新建login_action函数:微信图片_20220616132410.png

然后让我们思考这个函数应该做些什么事?

  1. 获取前端给的 俩个字符串:用户名和密码
  2. 调用django自带的用户数据库,来验证这个用户是否存在并且密码正确
  3. 如果不正确,就随便给前端返回点什么,前端都会弹窗说报错文案
  4. 如果正确,就给用户进行重定向,定到首页:home.html


好,让我们第一步,获取前端数据!

还记得为啥要带这个reqeust参数么,因为我们所有的数据都藏在这个request参数里。

   如下代码可以从中获取:微信图片_20220616132516.png

其中的username/password就是我们刚刚前端页面发http请求时候的俩个参数名字,一定要对应上!否则会说找不到错误。


我们可以尝试一下,在浏览器随意输入用户名/密码,点击登陆,看看后端我们pycharm能否打印成功。保证服务启动中。微信图片_20220616132525.png

点击登陆按钮后,可以看到已经打印好了,这说明我们的前端数据传输链路打通了。虽然后面报错了,但是无需担心,这是因后端函数并没有给前端返回什么,所以报错。一会我们还要继续写呢。

   

   开始继续写验证用户名密码代码:

这里我们必须引入一个django的库,专门验证登陆的。叫做auth。

然后 用我们前端给的用户名和密码,调用这个auth函数,去用户库里查询用户,我们的引用变量自定义为user, 这个auth函数如果在库里找到了这个用户,那么就会给你返回这个用户实体,否则就给你返回None微信图片_20220616132531.png

所以我们接下来就要 判断,这个user是一个用户实体,还是一个None:微信图片_20220616132653.png

我们先来写 如果用户名密码不对,也就是程序走进了else的情况:微信图片_20220616132658.png

这里我们随便返回,哪怕是个空,前端都会弹窗报错,因为我们前端html已经写好了,只要接收到返回值,无论是什么,都弹窗错误文案!当然这里也可以设计成弹窗提示返回值,然后后端返回值我们就要返回 错误文案。也是可以。

   再来写正确的部分:微信图片_20220616132703.png直接重定向/home/首页,我们前面讲过,HttpResponseRedirect函数是重定向浏览器链接的。现在我们试试看吧!

   刷新浏览器,确保服务运行中。输入用户名密码点击登陆!

然后没有任何反应!!!而后端报了一个错!!!微信图片_20220616132710.png那么这个错误是什么意思呢?

我们看最后一句,sqlite3错误,这是我们django自带的数据库,这说明是数据库错误,no such table,翻译过来是 没有这个表,哪个表?auth_user ,就是我们前面总提的 django自带用户表。

   所以我们现在需要生成这个表。

点击pycharm底部的cmd命令后输入Terminal模式,这里输入的是你操作系统的命令,比如mac的ls widows的dir ,确保我们在这个项目根目录下,也就是能看到 manage.py的目录下

   依次输入并回车:

python3 manage.py makemigrations

python3 manage.py migrate

俩句命令

分别是:同步表结构,生效表结构。

请牢记这俩句命令,之后我们自己弄的任何数据库设置/更改,都需要这俩句来让其生效,是一个最常用的命令,面试中很多面试官靠这种超级常用的命令来试出你到底是培训机构书本填鸭出来的,还是真才实学实际经验爆表的高手微信图片_20220616132717.png

然后我们切换换Run,来观察django的输出日志:

然后我们在浏览器再测试登陆功能:微信图片_20220616133014.png

出现弹窗,说明整个链路 全部打通!后端也没有报错。


接下来我们意识到一件事情,就是我们的用户表并没有一个用户是个空的,所以我们无论输入什么用户名都会找不到 从而弹窗。


所以我们下一节就要学习 注册功能!注册1个账号,然后登陆测试登陆成功的情况。

相关文章
|
1月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
36 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
30天前
|
监控 测试技术
如何进行系统压力测试?
【10月更文挑战第11天】如何进行系统压力测试?
91 34
|
4天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
29 3
|
30天前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
105 32
|
6天前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
18 3
|
8天前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
40 1
|
15天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
26天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
42 2
|
8天前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
28 0
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
56 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

热门文章

最新文章