Mock Server
为什么会出现Mock Server
项目邻近上线,但是前后端完成度不一样,如果等前后端代码都完成后会影响测试,所以产了Mock技术.
什么是Mock Server?
Mock Server 模拟服务器: 通过模拟真实的服务器,提供对来自客户端的真实请求,Mock Server 可以搭建在本地也可以搭建在远程,可以返回静态的数据也可以返回动态的数据
Mock Server 通常被用来干什么
在工作中,通常以接口的形式以Mock API Server 对外提供服务
- 前后端联调使用,通过实现约定的接口规范,使前端可以不依赖后端服务,独立开始工作
- 使用Mock Server 屏蔽无关的真实服务,从而专注于要测试的服务
- 供测试工程师使用, 在测试环境避免调用第三方收费服务
- 屏蔽第三方依赖
开源的Mock Server
不写代码
- postman
写代码
- java Mock-Server:https://github.com/mock-server/mockserver
- python response: https://github.com/getsentry/responses
- 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/
- 安装cypress
- 找到要Mock的接口,观察它的请求和返回
- 使用cy.server().route() 达到Mock的目的