什么是AutoLine开源平台
AutoLine开源平台是一个开源自动化测试解决方案,基于RobotFramework进行二次开发,支持RobotFramework几乎所有的库。
源码地址 github地址: https://github.com/small99/AutoLine
码 云 地 址:https:///lym51/AutoLine
前言
Flask初始化主要完成以下几个功能:
创建Flask应用 初始化相关基础,例如数据库对象、配置管理、邮件、登录试图、blueprint注册等等 利用flask初始化函数加载默认或读取配置文件初始化2中的相关环境
代码模块 初始化flask模块和调用flask初始化主要在如下图所示的模块中: 其中: __init__.py 定义和实现了flask的相关环境初始化 manage.py 中使用指定的配置调用create_app完成实际初始化动作 源码分析 # -*- coding: utf-8 -*-
__author__ = "苦叶子"
"""
公众号: 开源优测
Email: lymking@foxmail.com
"""
# 导入flask from flask import Flask # 导入flask邮件插件 from flask_mail import Mail # 导入SQLAlchemy,用于数据库管理 from flask_sqlalchemy import SQLAlchemy # 导入登录管理 from flask_login import LoginManager # 导入自己写的配置变量,请参见config.py模块中定义的config变量 from config import config
# 初始化邮件对象 mail = Mail() # 初始化数据库对象 db = SQLAlchemy() # 初始化登录管理及登录视图 login_manager = LoginManager() login_manager.login_view = 'auth.login'
# 创建flask应用函数 def create_app(config_name): # 初始化flask应用,并将配置导入之app上下文环境 app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) # 对不同的对象都要初始化flask上下文环境的目的是: # 为了上这些能够在flask上下文环境中使用 # 初始化邮件flask上下文环境 mail.init_app(app) # 初始化数据库flask上下文环境 db.init_app(app) # 初始化登录管理flask上下文环境 login_manager.init_app(app) # 判断是否配置了ssl,是则初始化ssl上下文环境 if app.config['SSL_REDIRECT']: from flask_sslify import SSLify sslify = SSLify(app)
# 注册静态导航蓝图(blueprint) from .main import main as main_blueprint app.register_blueprint(main_blueprint)
# 注册认证导航蓝图 from .auth import auth as auth_blueprint app.register_blueprint(auth_blueprint, url_prefix='/auth')
# 注册restful api蓝图 from .api import api_bp as api_blueprint app.register_blueprint(api_blueprint, url_prefix='/api/v1')
# 将创建并初始化好的flask应用返回 return app
下面我们看下在manage.py中如何调用create_app来初始化全局flask运行环境的。 因为上文AutoLine源码分析之配置管理已经全面的分析了manage.py,本文就截取flask应用创建的关键代码: 在manage.py中导入create_app函数及db变量 from app import create_app, db 2. 调用create_app初始化flask应用 app = create_app(os.environ.get('AUTOBEAT_CONFIG') or 'default') 3. 因为我们用flask migrate来集成和管理数据迁移我们的flask应用,所以需要用我们创建的app来初始化migrate环境及数据迁移
# 创建manager对象,并初始化migrate环境(用于数据库迁移、升级等) manager = Manager(app) migrate = Migrate(app, db)
# 创建migrate shell上下文 def make_shell_context(): return dict(app=app, db=db, User=User, Role=Role)
# 新增一些shell 命令 manager.add_command('shell', Shell(make_context=make_shell_context)) manager.add_command('db', MigrateCommand) 4. 主函数,在main函数中我们通过manager.run() 来运行我们的flask应用 if __name__ == '__main__': check_python_version() check_version()
if "runserver" in sys.argv: start_trigger()
output_logo()
manager.run()总结 创建flask应用的代码不多,但涉及的知识面比较广,例如你需要了解:
flask创建一个基本服务的过程,你可以看下这个文档 http://docs./docs/flask/quickstart.html#a-minimal-application 你需要了解什么是sqlalchemy(python下很完美的ORM框架,支持mysql、mssql、mangodb、oracel等等数据库的管理)http://www./ 你需要了解migrate如何做数据库的迁移、升级等等http://flask-migrate./en/latest/
其他的知识点就不列了,大家根据关键字自己去搜索,上述三个可以先大致浏览一下,自己跟着AutoLine的目录结构把代码敲一遍,要是能在敲完后,跑起来,那你就掌握了不少东西了。 AutoLine源码分析之开始篇
AutoLine源码分析之入口源码
AutoLine源码分析之配置管理
AutoLine源码分析之数据库模型
动下手指往下⬇️⬇️⬇️点赞和留言支持下我持续写
|