测试需求平台3-登录打通和产品列表功能实现

简介: 从 0-1手把手实现简单的测试平台开发教程,内容将囊括基础、扩展和实战,由浅入深带你实现测试开发岗位中平台工具技术能力入门和提升。

1. Mock关闭

在系列第1篇Acro Pro演示中,我们并没启动任何服务服务,就能正常的登录和页面数据查看,这是因为框架内置了mock解决方案,前后端并行开发在没有后段接口数据的情况下提供模拟数据请求的功能,原理是对ajax的拦截处理,由于我们的项目暂时用不到,所以详细的用法有需要请参考官方文档。

mock解决方案 https://arco.design/vue/docs/pro/mock

这有个内容需要注意,Acro Pro被 Mock.js 匹配并拦截的请求,因此请求接口信息不会出现在开发者工具的 network 面板中,也即意味着我们想查到登录的接口和返回值只能从项目初始化代码入手了。
image.png

因为此片就要实现前后端打通,为了调试开发方便,我们来了解下如何关闭数据模拟功能,大奇这里总结并且验证有以下几种方式:

方式一:开关 官方文档说明中指出每个Mock 都会被 setupMock.setup 包裹,本项目的位置位于src/utils/setup-mock.ts,核心的代码如下:

import { debug } from './env';
export default ({ mock, setup }: { mock?: boolean; setup: () => void; }) => {
  if (mock !== false && debug) setup();
};

非生产环境下默认启动数据模拟,当我们需要调试接口的时候只需要将 setupMock 的 mock 参数置为 false 即可,如项目中的用户相关mock接口src/mock/user.ts就可以这样关闭:
image.png

通过重新登录测试下是否正确关闭,正确的话会有正常接口请求以及网络错误返回
image.png

方式二:文件(夹)删除 完全不用模拟功能的话直接删掉对应mock ts文件,或者删除掉整/src/mock文件夹
方式三:单接口注释 对于只想不用某个接口,可以注释单个Mock.mock(new RegExp('/api/user/info')...); 代码

2. 打通前后端登录逻辑

通过查看src/mock/user.ts文件登录用户信息两个核心代码,可以得到要实现的API路径以及返回值,并且整体的逻辑后段是可以完全参照逻辑实现。
image.png

2.1 登录login接口

此接口实现编写基于第2篇初始化的TPMService项目中app.py新增接口代码,因此POST请求的登录/api/user/login接口参考代码如下:

其中关于Flask的接口方法定义,参数如何使用后续随着正式的开发和总结会详细讲到,这里只要看到注释和实现逻辑即可。
from flask import Flask
from flask import request
import json

app = Flask(__name__)

@app.route("/api/user/login",methods=['POST'])
def login():
    data = request.get_data() # 获取post请求body数据
    js_data = json.loads(data) # 将字符串转成json

    if 'username' in js_data and js_data['username'] == 'admin':
        result_success = {"code":20000,"data":{"token":"admin-token"}}
        return result_success
    else:
        result_error = {"code":50000,"message":"账号密码错误"}
        return result_error


if __name__ == '__main__':
    app.run()


IDE运行(Run ‘Flask(app.py)’或者终端切到项目跟目录命令行(python3 app.py)执行,通过后 curl 或者 postman进行接口请求测试。

  • CASE1:admin登录成功
  • CASE2:非匹配用户返回错误
curl -X POST http://127.0.0.1:5000/api/user/login -d '{"username":"admin","password":"123456"}'
# 成功返回 {"code":20000,"data":{"token":"admin-token"}}

curl -X POST http://127.0.0.1:5000/api/user/login -d '{"username":"root","password":"654321"}'
#失败返回 {"code":50000,"message":"\u8d26\u53f7\u5bc6\u7801\u9519\u8bef"}

2.2 用户info接口

继续参考前端 /api/user/info 的mock代码,以及登录后端Flask代码,实现GET方法请求的用户详细接口

@app.route("/api/user/info",methods=['GET'])
def info():
    # 获取GET中请求token参数值
    token = request.args.get('token')
    if token == 'admin-token':
        result_success = {
            "code": 20000,
            "data": {
                "roles": "admin",
                'name': '大奇',
                "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif",
                "jobName": '非典型程序员',
            }
        }
        return result_success
    else:
        result_error = {"code": 50000, "message": "用户信息获取错误"}
        return result_error

重新编译运行app.py 同样对接口进行一个正确请求的测试,可以通过token得到正确的用户基本信息。
image.png

2.3 登出logout接口

由于上边我们是关闭了整个user的所有mock,所以这里还要实现一个退出登录/api/user/logout接口,以实现登录与登出交互。

@app.route("/api/user/logout", methods=['POST'])
def logout():
    result_success = {
        "status": 'ok',
        "msg": '请求成功',
        "code": 20000,
    }
    return result_success

2.4 联调登录

服务接口两个接口准备好了,前端请求域名以已换到端口5000的后端服务了,当前为开发环境只需修改一下默认的域名地址,文件位于根目录.env.development文件,将请求改为如下配置即可。

VITE_API_BASE_URL= 'http://127.0.0.1:5000'

需要重新运行编译前端项目,来到登录界面输入admin/admin 验证是否切到后端服务请求,但不幸的是返回错误提示 Request Error ,打开浏览器调试模式查看Network请求与返回,同时看flask日志,输出显示类似 "OPTIONS /api/user/login HTTP/1.1" 200 提示,这便是前后端分离中经典的 跨域问题,简单说就是浏览器一种安全机制,至于详细的后续单独再说,这里先一个通用解决办法就是在python flask中允许跨域就好了。

跨域同源问题参考: https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy

代码使用CORS库,通过 pip3 install Flask_Cors 命令进行安装,新增的跨域解决代码位置位于app声明之下,具体参考如下:

from flask_cors import CORS;


app = Flask(__name__)
CORS(app, supports_credentials=True)

还有一点在src/user.ts真正的用户接口请求定义中,对于获取用户信息接口还要适当适配下,需要将其默认POST请求改为GET,并且增加路径参数 ?token=admin-token,以实现正确获得用户信息的目标。
image.png

最后分别重新启动前后端,测试下正式请求登录与主页面进入是否正确,这里通过一个GIF做个实现展示。

目录
相关文章
|
1月前
|
人工智能 搜索推荐 Serverless
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
88 7
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
|
2天前
|
消息中间件 测试技术 Linux
linux实时操作系统xenomai x86平台基准测试(benchmark)
本文是关于Xenomai实时操作系统的基准测试,旨在评估其在低端x86平台上的性能。测试模仿了VxWorks的方法,关注CPU结构、指令集等因素对系统服务耗时的影响。测试项目包括信号量、互斥量、消息队列、任务切换等,通过比较操作前后的时戳来测量耗时,并排除中断和上下文切换的干扰。测试结果显示了各项操作的最小、平均和最大耗时,为程序优化提供参考。注意,所有数据基于特定硬件环境,测试用例使用Alchemy API编写。
10 0
linux实时操作系统xenomai x86平台基准测试(benchmark)
|
2天前
|
传感器 Linux 测试技术
xenomai 在X86平台下中断响应时间测试
该文讨论了实时操作系统中断响应时间的重要性,并介绍了x86中断机制和Xenomai的中断管理,包括硬件中断和虚拟中断的处理。Xenomai通过I-Pipe确保实时性,中断优先级高的Xenomai先处理中断。文中还提到了中断响应时间的测试设计,分别针对I-Pipe内核间虚拟中断和硬件中断进行了测试,并给出了在不同负载下的测试结果。
8 0
xenomai 在X86平台下中断响应时间测试
|
10天前
|
Linux 测试技术 数据安全/隐私保护
CentOS安装MeterSphere并实现无公网IP远程访问本地测试平台
CentOS安装MeterSphere并实现无公网IP远程访问本地测试平台
|
12天前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之在DataWorks中,冒烟测试在环境测试如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
20 0
|
18天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
38 0
|
20天前
|
关系型数据库 Java 测试技术
云效产品使用常见问题之流水线Maven单元测试链接rds要配置白名单如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
20天前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
114 7
性能工具之emqtt-bench BenchMark 测试示例
|
14天前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
3天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
13 0

热门文章

最新文章