2022软件测试技能 Postman Mock 和 Python Flask Mock 实战教程

本文介绍了在前后端分离开发中使用Mock接口的重要性,详细讲解了如何利用Postman创建Mock服务以及使用Python的Flask框架搭建简易Mock服务器。通过这两个工具,可以快速模拟接口返回数据,加速前端开发和测试进程。文中还涵盖了处理不同请求方法、获取参数、文件上传以及MD5加密等操作。
摘要由CSDN通过智能技术生成

系列文章目录

提示:阅读本章之前,请先阅读目录



前言

本章会介绍,Postman的mock,以及python flask 框架的mock教程


一、为什么要自定义接口(Mock)?

从某种意义上来说,我们mock的数据,实际上就是接口的数据

我们为什么要模拟数据呢?

  1. 解决前后端分离开发的依赖,在前端开发的时候,需要依赖后端的接口,但是此时后端的接口还未开发完成,那么,前端就要被耽搁吗?显然不是,如果,这个时候,我们能够有一个模拟的接口,来模拟返回数据,不进行复杂的业务数据处理,那么,这样就可以加快前端开发进度。
  2. 有时候,我们需要调用第三方接口,或者是,该接口需要查询的时间非常长,那么,我们就可以自定义接口,直接返回该数据,那么,就直接节省了,服务器处理的时间,这样,就大大提升我们的测试进度或者是前端开发进度
  3. 对于一些支付接口,在项目前期,支付接口是需要签各种协议的,有的,还要等项目上线,才有支付接口,并且,支付接口涉及金额等敏感信息,是没办法频繁测试,所以,我们就可以自定义接口,模拟支付接口,从而达到测试支付接口
  4. 当我们需要给客户演示项目成果的时候,这个时候,我们可能没有真实的数据,但是,我们可以模拟真实的数据,mock,有个好处就是,当我们有真实的接口的时候,我们只需要把接口地址改为真实的接口地址,这样就直接切换到真实接口,需要mock接口,那么就切换到mock地址

二、Postman Mock

1. 安装最新版 postman

要用mock的话,需要安装最新版的才有,旧版,没有这个功能

在这里插入图片描述

2. 创建mock

postman的mock,是比较简单的,你不能对参数进行处理,只能指定请求方式,请求的资源路径
在这里插入图片描述

然后,下一步

在这里插入图片描述

然后再填写mock 名

在这里插入图片描述

然后,我们会得到一个mock地址

在这里插入图片描述

然后,我们返回集合,发起请求

在这里插入图片描述

三、Python + Flask

1. 安装 Flask

pip install Flask

2. 创建路由

# 导入包,Flask,和,request(获取请求的数据)
from flask import Flask, request

# 实例化
app = Flask(__name__)

# 指定路由,访问的资源路径是/,默认的请求方法是get
@app.route('/')
def cust_index():
    return {
        'code': 0,
        'msg': '成功',
        'data': [
            {'name': 'xiaofeng', 'age': 20},
            {'name': 'xiaohong', 'age': 16},
            {'name': 'xiaoming', 'age': 28}
        ]
    }

3. 运行

在最下面,写上运行代码

if __name__ == '__main__':
    app.run()

会在控制台看到,我们的临时mock地址

"C:\Program Files\Python36\python.exe" D:/code/flask_mock_demo/demo.py
 * Serving Flask app 'demo' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

4. 通过mock地址,访问

通过get
在这里插入图片描述
这样,我们就简单的实现了自定义接口

可以和postman mock一样的效果,并且,请求速度是非常快,因为在本地,postman的mock是通过服务器来部署的,所以,访问外部连接,请求速度是比较慢的

5. 设置请求方法

# 导入包,Flask,和,request(获取请求的数据)
from flask import Flask, request

# 实例化
app = Flask(__name__)

# 指定路由,访问的资源路径是/
@app.route('/', methods=['GET', 'POST'])
def cust_index():
    return {
        'code': 0,
        'msg': '成功',
        'data': [
            {'name': 'xiaofeng', 'age': 20},
            {'name': 'xiaohong', 'age': 16},
            {'name': 'xiaoming', 'age': 28}
        ]
    }

传入参数,methods

这样的话,我们就可以同时支持get和post的请求

6. get和post获取参数

# 我们获取请求的参数,需要引入request这个包
from flask import Flask, request

app = Flask(__name__)

@app.route('/get-request', methods=['GET'])
def get_request():
	# get请求,是通过request.args来获取的
    username = request.args.get('username')
    password = request.args.get('password')
    msg_obj = {
    	'username': username,
    	'password': password 
	}
    return msg_obj

@app.route('/post-request', methods=['POST'])
def post_request():
	# post请求,是通过request.form来获取的
    username = request.form.get('username')
    password = request.form.get('password')
    msg_obj = {
    	'username': username,
    	'password': password 
	}
    return msg_obj

7. 获取文件上传

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload-file', methods=['post'])
def post_file():
	# 获取上传的文件,是通过request.files获取
    file = request.files.get('file')
    # 判断是不是file字段,是不是文件类型
    if file is None:
        return {
            'code': 1,
            'msg': '当前不是文件类型,无法上传',
            'data': []
        }
    # 判断文件是不是为空
    if file.filename == '' or file.filename is None:
        return {
            'code': 1,
            'msg': '请上传文件',
            'data': []
        }
    file_type = str(type(file))
    path = './upload/' + str(file.filename)
    # 判断文件是不是文件类型
    if file_type == "<class 'werkzeug.datastructures.FileStorage'>":
    	# 调用save方法保存
        file.save(path)
        msg_obj = {
            'code': 0,
            'msg': '上传成功',
            'data': {
                'url': path
            }
        }
    else:
        msg_obj = {
            'code': 1,
            'msg': '当前不是文件类型,无法上传',
            'data': file_type
        }
    return msg_obj

8. md5加密

# md5加密,在这个包里面
import hashlib

from flask import Flask, request

app = Flask(__name__)

# 我们创建一个md5加密函数
def md5(val):
    """md5加密"""
    # str(val)确保加密的是一个字符串
    # encode('utf-8'),对于中文的加密,需要先转码
    # hexdigest() 16进制
    return hashlib.md5(str(val).encode('utf-8')).hexdigest()

@app.route('/get-request', methods=['GET'])
def get_request():
    username = request.args.get('username')
    password = request.args.get('password')
    if username is None or password is None:
        msg_obj = {
            'code': 1,
            'msg': '请输入账号,密码!',
            'data': []
        }
    else:
        if str(username) == 'admin' and str(password) == md5('admin'):
            msg_obj = {
                'code': 0,
                'msg': '登录成功',
                'data': [
                    {'name': 'admin'}
                ]
            }
        else:
            msg_obj = {
                'code': 1,
                'msg': '登录失败,账号密码错误',
                'data': []
            }
    return msg_obj

更新日志

提示:将会持续优化更新

20220725,为什么要自定义接口(Mock)?,Postman Mock-安装最新版postman,创建mock,Python+Flask-安装Flask,创建路由,运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值