做过接口测试的同学一定听说过mock Server,大家会觉得其很神秘,很高大上!mock Server出现的原因是现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。于是就有了解决方案——搭建一个临时的server,模拟那些服务,提供数据进行联调和测试。下图很好的解释了什么是Mock server
Flask
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
Falsk的安装
pip install flask
Flask构建一个web服务简直太快了,7行代码就可以搞定,helloword代码如下:
- from flask import Flask
- app = Flask(__name__)
- @app.route('/')
- def index():
- return 'Hello World'
- if __name__ == '__main__':
- app.run()
然后在ide中运行这个py文件,显示如下:
在浏览器中输入http://127.0.0.1:5000/ 可以看到浏览器中显示Hello World
代码分析如下:
@app.route('/')说明了你要访问的url,'/'代表根目录;
return 'Hello World'代表在浏览器中显示Hello World,即请求http://127.0.0.1:5000/ 的返回值;
app.run()表示启动mock 服务。
如果我们需要构建带参数的get方法可以使用如下代码:
- @app.route('/check/<version>')
- def check_version(version=None):
- if version=='1':
- return 'version=1.0'
- elif version=='2':
- return 'version=2.0'
- else:
- return 'bad version'
这里相当于是在url中输入的参数
在浏览器输入127.0.0.1:5000/check/2 会输出version=2.0
在浏览器输入127.0.0.1:5000/check/1会输出version=1.0
在浏览器输入127.0.0.1:5000/check/111会输出bad version,
这个实例很容易模拟了我们需要的get方法的请求,判断具体方法,然后返回相应的值。
如果我们需要创建post方法可以使用如下代码:
- from flask import Flask,request
- @app.route('/login',methods=['POST'])
- def login():
- if request.method == 'POST':
- val=str(request.data, encoding = "utf8")
- print (val)
- if val.find('admin')==-1:
- return ' status 400,No such user! '
- else:
- return 'status 200,admin login'
- else:
- return ' status 403,login need post method'
通过RESTclient(Firefox插件)构建请求如下:
输出admin login
代码解析如下:
methods=['POST'] 限定了可以使用的http方法,只能使POST;
request.method 获取request的方法;
request.data获取request中data的值;
str(request.data, encoding = "utf8") 把request.data的值从bytes类型转换到str类型。
好了,通过上面的实例我们就可以很轻松的模拟POST或者GET方法来构建Mock Server了!
Flask和Django的选择
Django也是python web开发的主流框架,他与flask相比区别如下:
Flask提供了灵活性,简单性和细粒度的控制。
Flask不受限制,让你决定如何实现应用程序。
Django为我们的Web应用程序开发提供了管理面板,数据库界面,目录结构和ORM的全方位体验。
如果我们只需要开发一个轻量级网站或者特定的微服务(比如mock server),我们根本用不上Django自带的大而全的组件和功能,这时我们应该毫不犹豫地选择Flask;如果我们要开发包含各种功能的传统企业级网站(比如电商,新闻内容管理,社交网站,办公OA),使用Django能帮我们节省不少寻找或开发第三方扩展的精力。
总结
关于mock server在接口测试的面试中,通常都是终极考核,如果你能了解相关内容,并能够搭建mock server,那么你的技术面试考核90%是会通过的!
TOP云(west.cn)2月18日消息,近日 域名交易 市场爆,而国外DN最新一期榜单也已...
一、前期准备 1、申请好微信商户号appid,拿到商户id和商户秘钥,退款的话需要商...
点击免费下载《应用智能运维实践 试读版 》 https://developer.aliyun.com/topic...
对于许多组织来说,在冠状病毒疫情持续蔓延期间,云计算和边缘计算对维持其业务...
在这个电子商务快速发展的时代,在线产品评论对消费者购物行为有着巨大的影响力...
人们常说数据科学建立在三大支柱上:领域专业知识,统计数据和编程。RStudio的**...
本文转载自微信公众号「 木东居士」,转载本文请联系 木东居士公众号。 0x00 前...
本文转载自微信公众号「python与大数据分析」,作者一只小小鸟鸟。转载本文请联...
TOP云 推出的新春红包活动于2月1日正式开始,Club注册局作为合作伙伴参与此次活...
TOP云 (west.cn)9月4日消息,新一期的sedo 域名交易 榜出炉,榜单上共有54个 ...