背景:由于在开发过程中,会遇到以下的痛点
1.服务端接口提测延期,具体接口逻辑未完成实现,接口未能正常调通,导致客户端提测停滞;
2.因为前期已在技术评审上已与客户端开发定好接口字段,客户端比后端更早完工,就差接口联调;
3.测试客户端主要是在接口数据多样性上,保证接口返回的数据都做好处理,如按真实造数据流程会导致测试效率低;
解决办法:使用mock接口数据去测试客户端页面,提早介入测试
使用工具:
1.抓包工具(Charles、fidder)断点mock、Map_local
2.接口测试工具postman apifox
3.python flask
之前是用Charles使用本地数据去mock,但是有不方便的地方,如果对传参进行判断要弄多个文件,或者多个场景的数据,比较琐碎,
所以现在用flask解决,记录一下。
1.安装flask
pip install flask
然后就可以开始写接口了
# -*- coding: utf-8 -*-
# @Author : Shaox
# @Software: PyCharm
import os
import sys
basedir2=os.path.dirname(os.path.dirname(__file__))
sys.path.append(basedir2)
import flask
from flask import Flask,request, abort
from tools import *
from tools.http_request import Http_request
import json
logger = AutoLogger()
app= flask.Flask(__name__)
#解决flask接口返回的内容中文乱码的问题解决方式
app.config['JSON_AS_ASCII'] = False
#POST的接口demo
@app.route('/badge/wearBadge',methods=['POST'])
def wearBadge_mock():
if request.method == 'GET':
abort(404)
weartype = int(request.form["wearType"])
print(weartype)
print(type(weartype))
if weartype == 1:
data = {"ret": "0","msg": "成功","data": {"imageurl": "https://badge/84ba81a058f94a26a496900c391e1e11.jpeg","badgeid": 1000011}}
return json.dumps(data)
elif weartype == 0:
data = {"ret": "0","msg": "摘掉成功","data": None}
return json.dumps(data)
else:
data = {"ret": "123245","msg": "失败","data": None}
return json.dumps(data)
#GET的接口demo
@app.route('/badge/userWearInfo', methods=['GET'])
def userWearInfo_mock():
# mock场景1:请求方法错误,返回404
if request.method == 'POST':
abort(404)
else:
try:
getUserInfo = request.args.get('getUserInfo')
if getUserInfo == 0:
data = { "ret": "0", "msg": "成功", "data": { "uid": 12345, "nick": "库明加", "faceUrl": "http://u_123522281_avatar_230304_143335599.jpg", "gender": 1, "badgeAllNum": 32, "badgePercent": "", "badgeWearInfo": { "imageurl": "http://badge/2003pace_c.png", "badgeId": 200207 } } }
return json.dumps(data)
else:
data = {"ret":"0","msg":"成功","data":{"uid":110,"nick":"库里","faceUrl":"http://u_123522281_avatar_230304_143335599.jpg","gender":1,"badgeAllNum":32,"badgePercent":"","badgeWearInfo": None}}
return json.dumps(data)
except:
data = {"ret": 500, "msg": "服务器离家出走", "data": None}
return json.dumps(data)
if __name__ == "__main__":
app.run(host='0.0.0.0')
等falsk服务跑起来就可以用抓包工具把测试环境的域名接口转发到本地flask服务mock接口
只是简单的demo,后续可以写更多获取数据源的方法,随机生成不同的数据,增加数据上的多样性。