Mock Server


为什么会出现Mock Server

项目邻近上线,但是前后端完成度不一样,如果等前后端代码都完成后会影响测试,所以产了Mock技术.

什么是Mock Server?

Mock Server 模拟服务器: 通过模拟真实的服务器,提供对来自客户端的真实请求,Mock Server 可以搭建在本地也可以搭建在远程,可以返回静态的数据也可以返回动态的数据

Mock Server 通常被用来干什么

在工作中,通常以接口的形式以Mock API Server 对外提供服务

  1. 前后端联调使用,通过实现约定的接口规范,使前端可以不依赖后端服务,独立开始工作
  2. 使用Mock Server 屏蔽无关的真实服务,从而专注于要测试的服务
  3. 供测试工程师使用, 在测试环境避免调用第三方收费服务
  4. 屏蔽第三方依赖

开源的Mock Server

不写代码

  1. postman

写代码

  1. java Mock-Server:https://github.com/mock-server/mockserver
  2. python response: https://github.com/getsentry/responses
  3. javascript easy-mock https://github.com/easy-mock/easy-mock

自己实现一个demo版的Mock Server

flask 中文文档: https://flask.net.cn/


from flask import Flask,request,json,abort
app = Flask(__name__)

@app.route('/mock', methods=['GET'])
def index():
  
    return "Hello world"

@app.route('/mock',methods=['POST','GET'])
def mock(): 
    if request.method =="GET":
        abort(404)
    else:
        try:
            name = request.form['name']
            print(name)
            if name=="Alex":
                data = {"status":200,"message":"True","response":{"orderId":"100"}}
            else:
                data = {"status":400,"message":"False","response":{}}
        except:
             data = {"status":400,"message":"False","response":{}}
        return json.dumps(data)
if __name__ == '__main__':
    app.run()

cypress

前端单元测试工具 cypress
https://www.cypress.io/

  1. 安装cypress
  2. 找到要Mock的接口,观察它的请求和返回
  3. 使用cy.server().route() 达到Mock的目的