热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

测试平台(五)知识点补充

前言如果大家看我之前整个【测试平台搭建】的文章有很多疑问,比如说里面引入的一些包你很没用过又不知道怎么去运用的话,可以看下这篇博客,我把
前言

如果大家看我之前整个 【测试平台搭建】 的文章有很多疑问,比如说里面引入的一些包你很没用过又不知道怎么去运用的话,可以看下这篇博客,我把一些知识点,单独给拧出来总结了一下

接下来我会一一讲述各个知识点

后端:
--> 1、flask基本使用
--> 2、Flask Restx基本使用
--> 3、Flask-Restx集成Swagger
--> 4、Orm简要介绍
--> 5、flask_SQLAlchemy基本使用前端:
--> 1、api优化

  • Mikasa测试平台搭建专栏:https://blog.csdn.net/makasa/category_11904938.html?spm=1001.2014.3001.5482



一、flask基本使用


  • 之前其实已经简单介绍过了,不解的看注释部分
    https://blog.csdn.net/Makasa/article/details/125690307

1、下载flask

pip install flask

在这里插入图片描述



2、flask_demo.py

"""这里简单介绍flask的基本使用前提: pip install flask
"""

from flask import Flask# 1、创建app实例
app = Flask(__name__)# 2、定义路由及视图函数
@app.route("/demo")
def hello_world():return "HelloWorld"# 2、定义动态路由及视图函数
@app.route("/getname/")
def getname(username):return username# 3、定义【限定类型】路由及视图函数
# 类型包括5种:string,int,float,path,uuid
@app.route("/post/")
def get(username):return username# 4、路由的尾部带有"/"(浏览器的地址栏中输入和不输入“/”的效果一样)
# 路由的尾部没有“/”(输入的URL的结尾不能加 “/”,会报错404)
# 类型包括5种:string,int,float,path,uuid
@app.route("/demo2/")
def print():return "地址栏尾部有/"# 定义http请求:get/post/put/delete
# 5、定义【get/post/put/delete请求】路由及视图函数
# 注意:methods,里面是一个列表
@app.route("/testcase", methods=["get"])
# @app.route("/testcase", methods=["post"])
# @app.route("/testcase", methods=["put"])
# @app.route("/testcase", methods=["delete"])
def get_case():return {"code": 0, "msg": "get success"}if __name__ == '__main__':# debug为true,是热加载,更改完进行保存就能查看到效果# 指定host为局域网app.run(debug=True, host="0.0.0.0")





二、Flask-Restx基本使用


1、安装flask-restx

# 需要下载包
pip install flask-restx

在这里插入图片描述



2、flask_restx_demo1.py

"""这里介绍Flask Restx 接口配置的基本使用前提:pip install flask-restx他是一个支持Restful的flask插件,用于规范化接口的编写,并且支持swagger文档
"""

from flask import Flask
from flask_restx import Api, Resource# 1、创建app实例
app = Flask(__name__)
# 2、创建Api实例
api = Api(app)# 3、定义路由及视图函数
# 注意:装饰器改为使用@api.route("")
# 类里面要继承Resource类
@api.route('/hello')
class HelloWorld(Resource):def get(self):return {'hello': 'world'}# 4、启动
if __name__ == '__main__':app.run(debug=True)



3、flask_restx_demo2.py

"""这里介绍Flask Restx 接口配置的基本使用2前提:pip install flask-restx使用restful风格规范接口
"""

from flask import Flaskfrom flask_restx import Api, Resource# 1、创建app实例
app = Flask(__name__)
# 2、创建api实例
api = Api(app)# 接口路径定义在类上,对应不同请求操作创建不同的方法
@api.route("/user")
# 注意:类要继承Resource
class User(Resource):# 1、restful风格get方法def get(self):return {'code': 0, "msg": "get success"}# 2、restful风格post方法def post(self):return {'code': 0, "msg": "post success"}# 3、restful风格put方法def put(self):return {'code': 0, "msg": "put success"}# 4、restful风格delete方法def delete(self):return {'code': 0, "msg": "delete success"}if __name__ == '__main__':app.run(debug=True)





三、Flask-Restx集成Swagger


1、flask_restx_namespace_demo.py

"""这里介绍Flask-Restx namespace的使用
"""

from flask import Flask
from flask_restx import Api, Namespace, Resourceapp = Flask(__name__)
api = Api(app)# 1、定义Namespacce实例
hello_ns = Namespace("demo", description="demo管理")
case_ns = Namespace("case", description="用例管理")# 2、为类添加装饰器@namespace.route("")控制子路由
@case_ns.route("")
class TestCase(Resource):def get(self):return {'code': 0, 'msg': "get success"}def post(self):return {'code': 0, 'msg': "post success"}# 3、为命名空间指定访问资源路径,可以理解为访问的是/case底下的get/post..方法,命名空间为:用例管理
api.add_namespace(case_ns, '/case')if __name__ == '__main__':app.run(debug=True)



2、flask_restx_swagger_demo.py

"""这里介绍flask_restx,集成swagger的基本使用swagger可以理解为API接口文档,便于前后端分离项目中的使用前端可以直接访问文档进行接口调用,类似于postman
"""
from flask import Flask
from flask_restx import Api, Namespace, Resourceapp = Flask(__name__)
api = Api(app)# 1、定义命名空间
case_ns = Namespace("case", description="用例管理")# 2、为类添加装饰器@namespace.route("")控制子路由
@case_ns.route("")
class TestCase(Resource):# 3、定义parser解析器对象get_paresr = api.parser()# 4、通过parser对象添加参数# 第一个参数是参数名,后面是关键字传参:# 4.1、type:类型(int/bool/float/string/FileStorage);# 4.2、required约束控制(True/False)# 4.3、choices枚举参数# 4.4、location对应request对象中的属性(args/form/json/files)# 注意:一般get请求location都是args,# post请求可以为/form/json/files,但是呢file和json不能共存,form和json也不能共存# 也就是调用add_argumet()时,添加参数不能同时有location=file/jsonget_paresr.add_argument("id", type=int, location="args")# 5、添加装饰器@case_ns.expect(get_paresr)def get(self):return {'code': 0, 'msg': "get success"}# 6、为命名空间指定访问资源路径,可以理解为访问的是/case底下的get/post..方法,命名空间为:用例管理
api.add_namespace(case_ns, '/case')if __name__ == '__main__':app.run(debug=True)





四 、Orm简要介绍


1、ORM的含义

ORM(Object Relational apping):对象关系映射,他的作用是在关系向数据库和对象之间做一个映射,这也在具体操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只需要像平时操作对象一样操作就可以了

  • 我们【测试平台】的项目中就是引用ORM思想,将对象和表结构进行映射,创建一个实体然后直接操作实体的增删改查,不需要单独自己去写sql语句,所以看起来简单很多

在这里插入图片描述

在这里插入图片描述



2、ORM优缺点

优点:
- 隐藏 了数据访问细节
- ORM使我们构造固化数据结构变得非常简单缺点:
- 性能下降,添加了关联操作
- 无法解决特别复杂的数据库操作





五、Flask-SQLAlchemy插件配置


  • 上面简单介绍了一下ORM的含义,SQLAlchemy是python中最有名的ORM框架,而我们【测试平台】后端框架用的是Flask,那我们可以借助flask-sqlalchemy去实现对象的映射

1、安装flask-sqlalchemy

pip install flask-sqlalchemy

在这里插入图片描述



2、Flask-SQLAlchemy基本使用

在这里插入图片描述

在这里插入图片描述

"""这里介绍flask-sqlalchemy的基本使用
"""

from flask import Flask
from flask_sqlalchemy import SQLAlchemy# 1、实例化flask
app = Flask(__name__)# 2、配置数据库信息
username = "root"
password = "yy1998123"
server = "127.0.0.1"
database = "test_platform"app.config['SQLALCHEMY_DATABASE_URI'] = \f"mysql+pymysql://{username}:{password}@{server}/{database}?charset=utf8"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True# 3、将app与Flask-QLAlchemy进行绑定,实例化一个db对象
db = SQLAlchemy(app)# 4、创建数据库模型
# 4.1、需继承db.Model
class User(db.Model):# 4.2、注意:如果不自定义表名的话,他生成的数据库表默认是类名(user),若类名UserInfo,表名user_info# 若自定义了表名,则以自定义的为准__tablename__ = "User"# 4.3、定义表字段,类型/关键字# 4.3.1、常用参数类型:Integer/String(20)/JSON/DateTime/Boolean/Text..# 4.3.2、常用关键字参数:# primary_key:是否主键;autoincrement 是否自增# nullable:是否允许为空,unique:是否允许重复# default:默认值id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(20), unique=True, nullable=False)create_time = db.Column(db.DateTime)json = db.Column(db.JSON)def __repr__(self):return self.usernameif __name__ == '__main__':# 1、创建表db.create_all()# 2、删除表db.drop_all()



3、CURD基本操作


3.1、添加数据

在这里插入图片描述

在这里插入图片描述



3.2、查询数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



3.3、修改数据

在这里插入图片描述



3.4、删除数据

在这里插入图片描述





六、前端API架构优化


  • 为什么前端要优化api架构?主要是为了代码更加规范
  • 下面我就以我们的【测试平台前端】为例,简单讲解一下

在这里插入图片描述

1、http.js

在这里插入图片描述



2、封装各模块接口(testcase/plan/build.js)

在这里插入图片描述
在这里插入图片描述



3、整合api.js

在这里插入图片描述



4、挂载api

在这里插入图片描述

在这里插入图片描述


推荐阅读
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
author-avatar
xueer2502938817_416
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有