服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 接口测试系列文章之使用flask轻松搭建mock 服务

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

2020-12-30 01:14今日头条测试开发Kevin 编程技术

mock Server出现的原因是现今的业务系统很少有孤立存在的,它们或多或少需要使用兄弟团队或是其他公司提供的服务,这给我们的联调和测试造成了麻烦。于是就有了解决方案——搭建一个临时的server,模拟那些服务,提供数据进行

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

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

Flask

Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。

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

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文件,显示如下:

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

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

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

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

原文地址:https://www.toutiao.com/i6911184010098082311/

延伸 · 阅读

精彩推荐
  • 编程技术2021年值得关注的React PDF 库

    2021年值得关注的React PDF 库

    今天,许多网络应用程序为其用户提供内置的PDF浏览选项。然而,选择一个并不容易,因为它们的功能远远超过显示PDF。在这篇文章中,我将评估5个React的...

    TianTianUp5222021-06-21
  • 编程技术让开发效率倍增的 VS Code 插件

    让开发效率倍增的 VS Code 插件

    今天来分享一些提升开发效率的实用 VS Code 插件!Better Comments 扩展可以帮助我们在代码中创建更人性化的注释,有不同形式和颜色的注释供我们选择。 ...

    前端充电宝7132022-04-21
  • 编程技术AIOps,SRE工程师手中的利器

    AIOps,SRE工程师手中的利器

    AIOps开始成为一种极为重要的站点可靠性工程工具。它能够高效吸纳观察数据、参与数据以及来自第三方工具的数据,判断系统运行状态并保证其处于最佳...

    至顶网5962021-03-08
  • 编程技术从Context源码实现谈React性能优化

    从Context源码实现谈React性能优化

    这篇文章主要介绍Context的实现原理,源码层面掌握React组件的render时机,从而写出高性能的React组件,源码层面了解shouldComponentUpdate、React.memo、PureComponen...

    魔术师卡颂5312020-12-20
  • 编程技术真正聪明的程序员,总有办法不加班

    真正聪明的程序员,总有办法不加班

    工作效率提升了,就可以少加班了,聪明的程序员,总会有一堆可以提升编码效率的工具?当一种工具满足不了工作需求,就去探索新的,今天纬小创就给...

    今日头条12482021-03-04
  • 编程技术Delphi - Indy idMessage和idSMTP实现邮件的发送

    Delphi - Indy idMessage和idSMTP实现邮件的发送

    这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    JJ_JeremyWu6592020-09-22
  • 编程技术简单、好懂的Svelte实现原理

    简单、好懂的Svelte实现原理

    本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一边看、一边敲、一边学...

    魔术师卡颂4822021-11-10
  • 编程技术用户态 Tcpdump 如何实现抓到内核网络包的?

    用户态 Tcpdump 如何实现抓到内核网络包的?

    在网络包的发送和接收过程中,绝大部分的工作都是在内核态完成的。那么问题来了,我们常用的运行在用户态的程序 tcpdump 是那如何实现抓到内核态的包...

    开发内功修炼11612021-09-08