赞
踩
最近项目逐渐稳定,趁着不太忙的时候对之前搭建的自动化测试框架做些重构升级。现存的测试框架比较简单,主要功能是基于csv文件中定义的数据自动生成测试用例,然后使用pytest执行用例生成html格式报告。实际使用中,在macos上编辑csv文件很容易出错。基于此,我们决定将该平台重构封装成一个通用的自动化测试框架,QA能简单在页面上提交测试数据,也可以导入csv/yaml格式测试数据或者直接导入postman文件,自动生成测试测试用例代码,能自由的组合测试用例创建测试计划。业界最流程的两个web框架Flask和Django,最终我们选择了更轻量的Flask。以前只是简单了解,现在正好借此机会重新熟悉一下Flask。
Flask 是一个 Python 实现的 Web 开发微框架。 微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。
默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。
Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。
Flask:
Flask定位是微型框架,这意味着它的目标就是给你提供一个Web开发的核心支持。如果你需要其他的功能,你可以使用第三方插件,甚至可以自己写一个插件。
准备沙箱环境
bruce-mac-pro:PycharmProjects bruce.xu$ python3.7 -m venv python3.7env
激活沙箱
bruce-mac-pro:PycharmProjects bruce.xu$ source python3.7env/bin/activate
(python3.7env) bruce-mac-pro:PycharmProjects bruce.xu$
安装依赖包
(python3.7env) bruce-mac-pro:PycharmProjects bruce.xu$ pip3 install flask
from flask import Flask, current_app, redirect, url_for,current_app # 创建flask的应用对象 # __name__表示当前的模块名字 # 模块名,flask以这个模块所在的目录为总目录,默认这个目录中的static为静态目录,templates为模板目录 app = Flask(__name__, static_url_path="/python", # 访问静态资源的url前缀, 默认值是static static_folder="static", # 静态文件的目录,默认就是static template_folder="templates", # 模板文件的目录,默认是templates ) # 配置参数的使用3中方式(一般常用前面两种) # 1. 使用配置文件,在项目目录下创建config.cfg文件,调用一下方法引用 app.config.from_pyfile("config.cfg") # 2. 使用对象配置参数 class Config(object): DEBUG = True LOVE= "python" app.config.from_object(Config) # 3. 配置参数直接操作config的字典对象 app.config["DEBUG"] = True @app.route("/home") def index(): # 读取配置参数 # 1. 直接从全局对象app的config字典中取值 # print(app.config.get("cloudwalk")) # 2. 通过current_app获取参数,一般在取不到app对象的时候可以用current_app,它是app对象的代理对象。 print(current_app.config.get("cloudwalk")) #可以直接向浏览器返回字符串,后面讲解response的多种方式。 return "hello cloudwalk" #1.可以注册多个路由,都能同时访问接口。 #2. 使用url_for的函数,通过视图函数的名字找到视图对应的url路径,下面例子中index是上面的函数名。 #3.redirect可以重定向到一个新的视图下面。 #4.methods可以指定请求的方式 @app.route("/login2") @app.route("/login", methods=["GET", "POST"]) def login(): url = url_for("index") return redirect(url) # 路由传递的参数默认当做string处理,这里指定int,尖括号中冒号后面的内容是动态的 #这里指定int类型的转换器,也是比较常用,可以在函数中取到请求路径符合条件的值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。