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

在这里插入图片描述

在这里插入图片描述


推荐阅读
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社区 版权所有