当前位置: 首页 > 科技观察

接口测试系列文章使用flask轻松搭建mock服务

时间:2023-03-17 11:23:40 科技观察

做过接口测试的同学一定听说过mockServer,大家会觉得它很神秘,很高大上!之所以会出现mockserver,是因为现在的业务系统很少有一些是孤立存在的,或多或少需要用到兄弟团队或者其他公司提供的服务,给我们的联调测试带来了麻烦。于是就有了解决方案——搭建一个临时服务器,模拟那些服务,提供数据联调测试。下图很好的解释了什么是MockserverFlaskFlask是一个用Python编写的Web微框架,可以让我们使用Python语言快速实现一个网站或Web服务。falsk安装pipinstallflaskFlask搭建web服务简直太快了,7行代码就可以搞定,helloword代码如下:fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defindex():return'HelloWorld'if__name__=='__main__':app.run()然后在ide中运行py文件,显示如下:在浏览器中输入http://127.0.0.1:5000/,可以看到浏览器显示的HelloWorld代码分析如下:@app.route('/')描述了你要访问的url,'/'代表根目录;return'HelloWorld'表示HelloWorld在浏览器中的显示,即请求http://127.0.0.1:5000/的返回值;app.run()表示启动模拟服务。如果我们需要构建带参数的get方法,可以使用如下代码:@app.route('/check/')defcheck_version(version=None):ifversion=='1':return'version=1.0'elifversion=='2':return'version=2.0'else:return'badversion'这里相当于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会输出badversion。这个例子可以很方便的模拟出我们需要的get方法的请求,确定具体的方法,然后返回相应的值。如果我们需要创建post方法,可以使用如下代码:fromflaskimportFlask,request@app.route('/login',methods=['POST'])deflogin():ifrequest.method=='POST':val=str(request.data,encoding="utf8")print(val)ifval.find('admin')==-1:return'status400,Nosuchuser!'else:return'status200,adminlogin'else:return'status403,loginneedpostmethod'通过RESTclient(Firefox插件)构造请求如下:输出admin登录码解析如下:methods=['POST']limits可以使用的http方法,只有POST;数据的价值;str(request.data,encoding="utf8")将request.data的值从bytes类型转换为str类型。好了,通过上面的例子,我们可以很容易的模拟POST或者GET方式来搭建一个MockServer!Flask和Django的选择Django也是pythonweb开发的主流框架。Flask与Flask相比有以下不同:Flask提供了灵活、简单、细粒度的控制。Flask不受限制,可以让您决定如何实施您的应用程序。Django为我们的Web应用程序开发提供了管理面板、数据库接口、目录结构和ORM的一体化体验。如果我们只需要开发一个轻量级的网站或者特定的微服务(比如mockserver),根本不需要Django自带的庞大而全面的组件和功能,那我们应该毫不犹豫地选择Flask;如果我们要开发具有各种功能(如电子商务、新闻内容管理、社交网站、办公OA)的传统企业级网站。使用Django可以让我们省去很多寻找或者开发第三方扩展的工作。总结关于接口测试面试中的mockserver,通常是终极考核。如果你能看懂相关内容并搭建模拟服务器,那么你的技术面试考核就通过了90%!