一、mock接口数据应用场景:
1、测试接口A,A接口代码中调用其他服务的B接口,由于开发排期、测试环境不通等原因,依赖接口不可用
2、测试异常情况,依赖接口B返回的数据格式不对、返回None、超时等,A接口的错误处理是否合理
二、 搭建mock服务 (python3.6 搭建,index.py),详细的flask使用,请另行百度。
1、代码示例
# -*- coding: utf-8 -*-from flask import Flask,render_template,requestimport json,sys,flasksys.path.append("..")
app = Flask(__name__)
# get方法 1@app.route(‘/MockInterface/get_msg/<para>‘,methods=[‘GET‘])def my_mes(para): if para: return "succ" else: return "fail" # get方法 2@app.route(‘/MockInterface/testget‘,methods=[‘GET‘])def testget(): para1 = flask.request.args.get(‘para1‘) para2 = flask.request.args.get(‘para2‘) para3 = flask.request.args.get(‘para3‘) result = { "para1":para1, "para2":para2, "para3":para3 } return str(result)
# 设置用户的【用户等级】@app.route(‘/MockInterface/set_userinfo_level‘,methods=[‘POST‘])def set_userinfo_level(): try: uid = str(flask.request.values.get(‘uid‘))
level = int(flask.request.values.get(‘level‘)) except Exception as e: datas = json.loads(flask.request.get_data()) uid = str(datas[‘uid‘]) level = int(datas[‘level‘]) result = preAdmin_op().set_yh_evel(uid,level) # 实际业务方法,可根据实际需求如何改 return(str(result))
if __name__ == ‘__main__‘: app.run(host=‘0.0.0.0‘,port=5000,debug=True)
2、启动mock服务
注:mock部署的服务器,须与开发代码所在的服务器 网络互通。mock部署的位置信息用于以下iptable配置。
三、iptable配置 (在开发代码部署的机器上,root权限操作)
1、查看iptables配置:iptables -t nat -L --line-number
2、代码在A机器上,代码里需要访问192.169.4.17:80(依赖方),测试时候依赖方的接口没有准备好,就可以mock这个接口,让代码请求依赖方时,转到自己mock的服务上(192.169.4.18:8099),也方便构造各种场景
iptables -t nat -A OUTPUT -d 192.169.4.17 -p tcp --dport 80 -j DNAT --to 192.169.4.18:8099
3、参数含义:-t 表名 -A 增加规则名 -d 发往目的地ip -p 协议 -d端口号 -j 跳转目标 --to 目标ip:端口号
4、测试完后,需要删除A机器上的这条转发规则。行号可根据第一步种查出
iptables -t nat -D OUTPUT 行号
原文地址:https://www.cnblogs.com/wl-0929/p/mockInterface_wl.html
时间: 2024-11-07 12:02:06