需求:最近组内写了很多自动化测试工具,并且这些工具都是定时执行(检测线上版本)的,希望有测试失败用例时能及时通知给相关人员,需要编写一个短信服务公共模块;由于公司提供有短信接口,只是封装下,再增加点其他的功能逻辑,比如哪些模块的错误发给某些特定的人,如果第一次发送失败可以重复发送等等功能;
如何把此公共模块提供给测试工具开发人员,
当时有两种情况:1、作为包引入,需要开发两个模块,因为测试工具有java和python两种语言;2、提供一个接口服务,get或者post数据,这样只用提供一个接口即可;
一直没有尝试过提供接口服务,在询问了很多人后,决定用python自带的轻便web工具:flask;
流程如下:
1、首先编写发短信模块,此发短信模块很简单(前提是利用公司提供的公共的接口)再加上其他控制,最终的目的就是此模块能发短信;
2、然后编写web服务模块web_app.py:
-
from flask import Flask,request
-
from alam import * //导入短信发送模块alam
-
-
app = Flask(__name__)
-
@app.route("/alam/",methods = ['POST','GET']) //支持两种方式提交数据,post和get
-
def test():
-
'''post和get发送获取数据方式不同'''
-
if request.method == 'POST':
-
msg = request.form['msg']
-
function = request.form['function']
-
if function == 'film':
-
main(msg,function) //此main函数为alam中的发送短信函数;
-
return "post ok"
-
else:
-
request.method == 'GET'
-
msg = request.args.get('msg')
-
function = request.args.get('function')
-
if function =='film':
-
main(msg,function) //此main函数为alam中的发送短信函数;
-
return "get ok"
-
-
if __name__ == '__main__':
-
app.run(host = "127.0.0.1",port = 5005,debug = True)
运行web_app.py,此时服务就起来了;
如果你在浏览器中输入url:此时网页会显示“get ok”;
下面是get和post提交数据的区别:
-
import requests
-
url1 = ""
-
url2 = "?msg=test_post&function=film"
-
datas = {"msg":"test_post","function":"film"}
-
r = requests.post(url1,data=datas) //post方法
-
print r.text
-
print requests.get(url2) //get方法
OK,至此此功能已经完成,刚接触有些东西不是很了解,先写出来让他先能工作,以后慢慢了解吧;
阅读(3562) | 评论(0) | 转发(0) |