【测试平台开发】——04Flask后端api开发实战(一)
一、测试平台开发模式
要开发一套平台有两种开发模式,一个【大而全】,一个【小而简】。
说道【大而全】想到目前大型项目都使用的语言【JAVA】,【小而简】想到的是【Python】语言。
重武器(大而全):JAVA-Spring(中间件)、Python-Django(ORM、Admin、中间件)
轻武器(小而简):Python-Flask、JAVA-SparkJava
想必大家都听过田忌赛马吧,同等级的马匹也会有好与坏,既然都是同等级的话,相应的选择最有优势的为最好。
所以现在使用Python开发测试平台,就选择Flask框架了。
二、设计测试平台
- 存储测试用例
- 测试用例需求关联
- 查找测试用例
- 更改测试用例
- 执行测试用例
- 测试用例分类(任务和测试套)
三、测试平台基本流程
四、测试平台后端组成
五、Flask基本功能的使用
《第一篇文章》其实已经讲解了Flask基本用法,这一篇讲还有一些扩展的地方。
1、基本应用
from flask import Flask, request # 初始化Flask实例 # Flask是一个wsgi应用。(WSGI是一套协议,使Web应用和服务器交互跟通顺) # __name__给Flask一个名称 app = Flask(__name__) # 定义了路由,当访问路由中定义的url时,就会执行下面的函数 # 代表根,当浏览器什么都不输入的时候,就访问根 @app.route("/") def hello_world(): # Flask函数的返回值,默认是html类型 # 如果返回是字典,就是json类型 return "<p>Hello, World!</p>" if __name__ == '__main__': # 运行服务,Flask默认会监听127.0.0.1:5000,只要发送get或者其他请求,可以触发路由 # debug=True,启动调试模式,当代码发生变化,Flask服务会自动刷新 app.run(debug=True)
这回不使用命令行运行路由,里面添加了详细的注释。
浏览器输入:http://127.0.0.1:5000/
2、监听类型GET、POST
from flask import Flask, request app = Flask(__name__) # methods可以指定监听类型,post get put...... @app.route("/hello", methods = ['get']) def hello(): return "<p>thank you!</p>" if __name__ == '__main__': app.run(debug=True)
浏览器输入:http://127.0.0.1:5000/hello
Python Console输入:
>>> import requests >>> r = requests.get("http://127.0.0.1:5000/hello") >>> r.text # 结果 '<p>thank you!</p>'
路由默认支持get请求或者指定get类型,如果后面改为:@app.route("/hello", methods = ['post'])post类型的话
再浏览器输入:http://127.0.0.1:5000/hello
请求的URL不允许使用该方法。
会报错,所以需要改一下类型
3、传递参数
1)request.args
from flask import Flask, request app = Flask(__name__) @app.route("/param") def get_param(): # 可以利用request.args获取参数 # Thread-Local:使request.ars可以获取多个参数 return request.args if __name__ == '__main__': app.run(debug=True)
在浏览器中输入:http://127.0.0.1:5000/param?a=1&c=10
在Python Console中输入:
>>> import requests >>> r = requests.get("http://127.0.0.1:5000/param?a=1&c=10") >>> r.text # 结果 '{\n "a": "1", \n "c": "10"\n}\n'
2)request.json
from flask import Flask, request app = Flask(__name__) @app.route("/param", methods = ['post']) def get_param(): # 可以利用request.json获取传过来的请求体 return request.json if __name__ == '__main__': app.run(debug=True)
在Python Console中输入:
>>> r = requests.post("http://127.0.0.1:5000/param", json={'abc': 12345}) >>> r.text # 结果 '{\n "abc": 12345\n}\n' >>> r.json() # 结果 {'abc': 12345}
3)加变量字段
from flask import Flask, request app = Flask(__name__) # Flask中<>代表变量,会把真实的URl的<>中的内容传递给对应变量 @app.route("/param/<abc>") def get_var(abc): return abc if __name__ == '__main__': app.run(debug=True)
浏览器输入地址:http://127.0.0.1:5000/param/ddddd
六、Flask小手枪:
七、自动化平台系列文章汇总
不积跬步,无以致千里;不集小流,无以成江海。
如转载本文,请还多关注一下我的博客:https://www.cnblogs.com/Owen-ET/;
我的Github地址:https://github.com/Owen-ET————————————
无善无恶心之体, 有善有恶意之动, 知善知恶是良知, 为善去恶是格物。