什么是AutoLine开源平台
AutoLine开源平台是一个开源自动化测试解决方案,基于RobotFramework进行二次开发,支持RobotFramework几乎所有的库。
源码地址
github地址: https://github.com/small99/AutoLine
码 云 地 址:https://gitee.com/lym51/AutoLine
前言
Flask初始化主要完成以下几个功能:
- 创建Flask应用
- 初始化相关基础,例如数据库对象、配置管理、邮件、登录试图、blueprint注册等等
- 利用flask初始化函数加载默认或读取配置文件初始化2中的相关环境
代码模块
初始化flask模块和调用flask初始化主要在如下图所示的模块中:
其中:
__init__.py 定义和实现了flask的相关环境初始化
manage.py 中使用指定的配置调用create_app完成实际初始化动作
源码分析
# -*- coding: utf-8 -*-
__author__ = "苦叶子"
"""
公众号: 开源优测
"""
# 导入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.jinkan.org/docs/flask/quickstart.html#a-minimal-application
- 你需要了解什么是sqlalchemy(python下很完美的ORM框架,支持mysql、mssql、mangodb、oracel等等数据库的管理)http://www.sqlalchemy.org/
- 你需要了解migrate如何做数据库的迁移、升级等等http://flask-migrate.readthedocs.io/en/latest/
其他的知识点就不列了,大家根据关键字自己去搜索,上述三个可以先大致浏览一下,自己跟着AutoLine的目录结构把代码敲一遍,要是能在敲完后,跑起来,那你就掌握了不少东西了。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net