目的:学习如何mock返回数据结果
场景:前端完成,后端接口还没有完成的时候,可以模拟返回数据,或者需要模拟第三方支付接口的时候
方法一:通过fiddler、charles抓包工具,修改返回值。这里以charles为例
1)找到要修改的接口
2)右键save response,保存json文件到本地
3)使用编辑器修改返回数据,可以增加或者减少条数,如图:我使用的是editplus
4)点击charles工具-tools-map local。获取本地文件
5)再次请求接口的时候,就能看的修改的数据了
方法二:flask框架模拟返回数据
此方法是我自学视频的,有不对的欢迎指出。使用的是flask框架
1)安装flask,并启动flask程序
pip install flask
启动flask服务:
from flask import Flask, request
import json
# 实例化测试对象
app = Flask(__name__)
# 添加请求路径
@app.route('/')
def hello():
return '<h1>hello world</h1>'
if __name__ == '__main__':
# 设置端口,防止冲突
app.run('127.0.0.1', '9900')
2)请求mock_client文件,并在mock_server文件中添加post路径
# form格式的请求
@app.route('/post', methods=['POST'])
def run():
n1 = request.form['id']
n2 = request.form['name']
return n1+n2
import requests
body = {
'id': '123',
'name': '12345'
}
res = requests.post('http://127.0.0.1:9900/post', data=body)
print(res.text)
运行client文件
下面是完整的文档内容,给大家分享一下
# @Time : 2021-02-01 15:06
# @Author : xx
from flask import Flask, request
import json
# request做业务操作的,不是http请求
# 实例化测试对象
app = Flask(__name__)
# 添加请求路径
@app.route('/')
def hello():
return '<h1>hello world</h1>'
# # form格式的请求
# @app.route('/post', methods=['POST'])
# def run():
# n1 = request.form['id']
# n2 = request.form['name']
# return n1+n2
# json格式的请求
@app.route('/purchaser/', methods=['POST'])
def json_post():
res = json.loads(request.get_data())
out_trade_no = res['out_trade_no']
res_data = {
"code": "10000",
"msg": "Success",
"out_trade_no": "20150423001001",
"trade_no": "2015042321001004720200028594"
}
if res_data['out_trade_no'] != out_trade_no:
return '请求失败,out_trade_no不正确'
return res_data
if __name__ == '__main__':
app.run('127.0.0.1', '9900')
# @Time : 2021-02-01 15:20
# @Author : lqw -学习mock数据
import requests
# body = {
# 'id': '123',
# 'name': '12345'
# }
# res = requests.post('http://127.0.0.1:9900/post', data=body)
# print(res.text)
# 模拟json请求格式
json_data = {
'out_trade_no': 1612166664837,
'total_amount': 88.88,
'subject': '水杯',
'buyer_logon_id': 1232134543,
'buyer_id': 145644453
}
res =requests.post('http://127.0.0.1:9900/purchaser', json=json_data)
print(res.text)