首页 > 其他分享 >接口测试系列文章5——使用flask五分钟轻松学会搭建mock server

接口测试系列文章5——使用flask五分钟轻松学会搭建mock server

时间:2023-09-27 11:07:28浏览次数:41  
标签:return flask app request server Flask version mock


mock Server

做过接口测试的同学一定听说过mock Server,大家会觉得其很神秘,很高大上!mock Server出现的原因是现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。于是就有了解决方案——搭建一个临时的server,模拟那些服务,提供数据进行联调和测试。下图很好的解释了什么是Mock server

 

接口测试系列文章5——使用flask五分钟轻松学会搭建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文件,显示如下:

接口测试系列文章5——使用flask五分钟轻松学会搭建mock server_网络接口_02

在浏览器中输入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插件)构建请求如下:

接口测试系列文章5——使用flask五分钟轻松学会搭建mock server_flask_03

输出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%是会通过的!

标签:return,flask,app,request,server,Flask,version,mock
From: https://blog.51cto.com/liwen629/7621627

相关文章

  • Flask 中的蓝图与红图
    1.蓝图1.1.概述在Flask中,蓝图(Blueprint)是一种组织和管理路由、视图函数和静态文件的方式。它可以将一个应用分成多个模块,每个模块负责处理特定的路由和视图函数。模块化蓝图可以将一个大型应用拆分成多个小模块,每个模块负责处理特定的功能或业务逻辑。这样可以提高代码的......
  • sql server group by 拼接
    selectg.GameItem,g.UserId,b.vipLevel,CAST((  SELECT a.orderId+','FROMG_Game_Ordera  WHERE g.userId=a.userIdand SettleTime>='2023-09-2500:00:00'andSettleTime<='2023-09-2523:59:59'andXmState=0and......
  • JMockit学习笔记
    1基本概念1.1常用注解@Mocked:被修饰的对象将会被Mock,对应的类和实例都会受影响(同一个测试用例中)@Injectable:仅Mock被修饰的对象@Capturing:可以mock接口以及其所有的实现类@Mock:MockUp模式中,指定被Fake的方法1.2常用的类Expectations:期望,指定的方法必须被调用StrictExpectati......
  • Error: Could not find or load main class org.apache.zookeeper.server.quorum.Quor
    下载mavenapache-maven-3.9.4-bin.tar.gz解压tar-zxvfapache-maven-3.9.4-bin.tar.gz添加环境变量vim/etc/profileexportMAVEN_HOME=/usr/local/maven-3.9.4exportPATH=${PATH}......
  • 【SqlServer系列】001、SELECT语句
     SELECT语句 1、 1基本的select语句1、1、1从表中选择列selecta,bfromtable1、 1、2选择所有列select*fromtable  1、 2 where子句1、2、1 null值注意: 在搜索条件中有null数据时可能会出现unknown值。null值不同于空白或0,只表示值未知。并......
  • 【TinyWebServer】11数据库连接池
    基础知识什么是数据库连接池?池是一组资源的集合,这组资源在服务器启动之初就被完全创建好并初始化。通俗来说,池是资源的容器,本质上是对资源的复用。顾名思义,连接池中的资源为一组数据库连接,由程序动态地对池中的连接进行使用,释放。当系统开始处理客户请求的时候,如果它需要相关......
  • Windows Server 2019 使用 WSL(Linux子系统(官方发行WSL版))
    启用适用于Linux的Windows子系统必须启用“适用于Linux的Windows子系统”可选功能并重启,然后才能在Windows上运行Linux发行版。以管理员身份打开PowerShell并运行:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux下......
  • Windows Server 2019 使用 WSL(Linux子系统(Centos非官方发行版))
    启用适用于Linux的Windows子系统必须启用“适用于Linux的Windows子系统”可选功能并重启,然后才能在Windows上运行Linux发行版。以管理员身份打开PowerShell并运行:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Windows-Subsystem-Linux下......
  • 多选人员id转换成人员名称(sqlserver)
    1.selectstuff((select','+a.exttextfield1fromprojectawhere','+b.field027+','like'%,'+cast(a.idasvarchar(32))+',%'forxmlpath('')),1,1,'')asprojectfromufp0w7y71553484......
  • OGG MA - Not Able To Log InAdmin server ERROR: User name 'oggadmin' or password
    ogg的密码文件可能会损坏需要修复就新建一个新的ogg微服务并且把密码文件考到问问题的地方进行覆盖,我觉得这个是一个bugTherecommendationistoCreateadummyMAinstallationonthesameserverordifferenttestserver.Thencopythewallet[cwallet.sso]fromthis......