热门标签 | 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

在这里插入图片描述

在这里插入图片描述


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
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社区 版权所有