Python-Mock接⼝测试
一、简介
什么是mock?
测试桩,模拟被测对象的返回,⽤于测试
通常意义的mock指的就是mock server, 模拟服务端返回的接⼝数据,⽤于前端开发,第三⽅接⼝联调
为什么要mock?
- 解决依赖问题:当我们测试⼀个接⼝或者功能模块的时候,如果这个接⼝或者功能模块依赖其他接⼝或其他模块,那么如果所依赖的接⼝或功能模块未开发完毕,那么我们就可以使⽤mock模拟
被依赖接⼝,完成⽬标接⼝的测试。 - 单元测试:如果某个功能未开发完成,我们⼜要进⾏测试⽤例的代码编写,我们也可以先模拟这个功能进⾏测试
- 模拟复杂业务的接⼝:实际⼯作中如果我们在测试⼀个接⼝功能时,如果这个接⼝依赖⼀个⾮常复杂的接⼝业务,那么我们完全可以使⽤mock来模拟这个复杂的业务接⼝,其实 这个和解决
接⼝依赖是⼀样的原理。 - 前后端联调:如果你是⼀个前端页⾯开发,现在需要开发⼀个功能:根据后台返回的状态展⽰不同的页⾯,那么你就需要调⽤后台的接⼝,但是后台接⼝还未开发完成,可以借助mock来模拟后
台这个接⼝返回你想要的数据。
如何mock?
- 利⽤抓包⼯具⽐如fiddler
- 可以利⽤web框架模拟,Django Flask —python web开发框架,Flask的特点就是,结构简单,容易⼊门
二、使用flask编写接口进行MOCK
import flask
import json
server = flask.Flask(__name__)
# 无参数接口
@server.route('/index', methods=['get'])
def index():
res = {'msg': '这是一个接口', 'msg_code': 0}
return json.dumps(res, ensure_ascii=False)
@server.route('/demo/post', methods=['post'])
def test_post():
# 获取传参
usr = flask.request.values.get('username')
pwd = flask.request.values.get('password')
if usr and pwd:
res = {
"msg": {
"username": usr,
"password": pwd
},
"msg_code": 200
}
else:
res = {'msg': '必填参数未填写', 'msg_code': 404}
return json.dumps(res, ensure_ascii=False)
server.run(port=8999, debug=True)