引言 flask作为python的轻量级web框架,以其“快速、简单、轻便”的特点成为测试开发人员的入门级首选。在测试领域普遍用于:
- “接口mock(即测试提供一个api方便前端模拟)”。
- 自动化测试平台的后端服务搭建(若对系统的性能有高要求,建议使用sanic[异步非阻塞])。
学习内容:
- flask类库安装
- flask的最小组成单元
- Flask的实例化
- (默认) route路由配置
- 视图函数
- Flask的启动
- route(路由)配置
- 路径设置
- 无动态参数传递
- 动态参数传递
- 请求方法
学习网站(文档)
- flask官方文档
- (w3c)flask教程
- Flask学习笔记.xmind 【笔者学习总结】
1.flask类库安装
【推荐使用】pipenv的方式安装flask,方便开发环境干净与快捷部署。pipenv包管理工具学习请查看《pipenv包管理工具》相关内容。
# pip install flaskpipenv install flask # 【推荐使用】
2.flask的最小组成单元
1.最小组成单元—结构

from flask import Flask # 从flask库导入Flaskapp = Flask(__name__) # Flask的实例化@app.route("/") # flask必须要定义一个“主路由”,默认methods为"GET"def index(): # inidex()在flask中称为“视图函数”return "success:欢迎访问【flask的最小组成单元】" # return:字符串、dict(json)、render()、templates()等if __name__ == '__main__':# app.run() # 【默认方式】ip=127.0.0.1,port=5000app.run(host="127.0.0.1",port="9999",debug=True) # 【指定方式】建议:生产环境设置“debug=Flase”
2.init文件的封装
# __init__.py文件的内容from flask import Flaskfrom flask import request, render_template, redirect, abort, send_from_directory, jsonify, make_responseapp = Flask(__name__) # 实例化一个flask对象:apprequest = requestrender_template = render_templateredirect = redirectabort = abortsend_from_directory = send_from_directorymake_response = make_response
3.常用的flask函数/方法
| 编号 | 分类 | 类/函数 | 说明 |
|---|---|---|---|
| 1 | 基础 | Flask | flask框架中的基础类 |
| 2 | 请求 | request | 请求: - request.method # 获取请求方法 - request.path # 获取请求路径 - request.form[key] # 获取form中指定key的value - request.get_data() —-> json.load(request.get_data(asci=true)【实际用红色部分】 # 获取json数据 - request.files[源文件] # 文件上传 |
| 3 | 响应 | render_templates() | 模板渲染【模板文件应存放在“项目templates文件夹中”】 - return render_templates(指定模板文件,传参) 【说明:传参为“非必填”】 |
| redirect() | 重定向 - redirect(“/“) # 重定向到“/(首页)” - redirect(“http://www.xxx.com“) # 重定向到指定的网址【不建议跳转到https网站—>需要Ca证书配置】 - redirect(url_for(指定-视图函数)) # 重定向到“指定的视图函数” |
||
| abort() | 状态码的指定 - abort(302) - abort(500) |
||
| make_response() | 构造response - make_response().set_cookies() # 设置cookies - make_response().delete_cookies(key) # 删除cookies |
3.route路由配置
1.基本格式
格式 @app.route(path,methods=[])
- @app.route() :用于定义配置route路由。被@app.route()装饰器修饰的函数称为“视图函数”。
- path:指定“路由路径”
- methods :用于指定“请求方式”,post、get、put、delete等,例如:methods=[“POSTT”,”GET”]。-
2.路径设置
route的path分为“无参数传递”和“有参数传递”,具体的如下表所示:
| 分类 | 示例 |
|---|---|
| 无参数 | @app.route(“/list”) |
| 有参数 | 不定义参数的类型 @app.route(“/list/ 定义参数的类型 @app.route(“/list/ |
1.无参数传递
# 无参数传递@app.route("/")@app.route("/list")@app.route("/list", methods=["GET"])@app.route("/list", methods=["GET", "POST"])def list(): # 无参数传递# return "success"requestMethod = request.method # 获取-请求方法if requestMethod.upper() == "GET":return "【success】 请求方法=GET"else:return "【error】 请求方法!=GET"
2.有参数传递
1.未定义参数数据类型
# 有参数传递【不定义参数类型】@app.route("/list1/<name>")@app.route("/list1/<name>", methods=["GET"])@app.route("/list1/<name>", methods=["GET", "POST"])def listHaveKey(name): # 有参数传递【不定义参数类型】# return "success"requestMethod = request.method # 获取-请求方法if requestMethod.upper() == "GET":return f"welcome[get],{name}"else:return f"welcome[post],{name}"
2.定义参数数据类型
| 类型 | 说明 | 备注 |
|---|---|---|
| string | (接受)“不含斜杠”的文本 | 若请求传入的参数值,不符合“设定的参数数据类型”—->(响应)报错【404】![]() |
| int | (接受)正整数 | |
| float | (接受)正浮点数 | |
| path | (接受)“含斜杠”的文本 | |
| uuid | (接受)“uuid”的文本 |
# 有参数传递【定义参数类型】@app.route("/list2/<string:name>")@app.route("/list2/<string:name>", methods=["GET"])@app.route("/list2/<string:name>", methods=["GET", "POST"])def listHaveKeyWithType(name): # 有参数传递【不定义参数类型】# return "success"requestMethod = request.method # 获取-请求方法if requestMethod.upper() == "GET":return f"welcome[get],{name}"else:return f"welcome[post],{name}"



