背景
在做软件测试的过程中,经常会遇见需要后端返回特定的响应数据,这个时候就需要用到测试桩,进行mock测试。
测试工程师在本地模拟后端返回数据时,需要将前端请求数据代理到本地,本文介绍xswitch插件代理请求到flask框架下的测试桩。
原理
浏览器发起的请求,本应该发送到后端服务器,服务器返回响应报文
但是通过XSwitch 代理到本地服务进行响应
XSwitch 插件的使用
1. 下载 XSwitch插件的安装包
Chrome浏览器下载插件: https://crxdl.com/
2.解压下载的插件包
解压出来后有个crx文件
3. Chrome安装插件
进入Chrome设置,有个扩展程序
打开开发者模式,将刚刚解压的crx文件拖入扩展程序,稍等一会便可安装成功
XSwitch的使用
按照后,在插件中可以找到
点击后,点击最后一个图标可以进入全屏
然后浏览器访问网站,找到要模拟返回的接口,我这里要返回这个商品评价的接口
将接口的地址,与代理的地址值设置到xswitch插件中,启动插件
{"proxy": [["http://192.168.150.138:8080/method/tradeComment/list.htm", // 请求的服务器接口地址"http://127.0.0.1:8888/test1", //本地的测试桩地址],],
}
其中http://192.168.150.138:8080/method/tradeComment/list.htm
为本来的接口地址。
http://127.0.0.1:8888/test1
为本地测试桩的地址,基于flask框架写的。
python-flask框架模拟返回
这里只做演示
from flask import Flask, make_response, request
from flask_cors import CORSapp = Flask(__name__)
CORS(app)@app.route("/test1", methods=['GET','POST', 'OPTIONS'])
def index():data = {"next": 1,"grade2Count": 0,"last": 1,"grade1Count": 3,"prev": 1,"isLastPage": True,"count": 4,"page": {"count": 4,"pageSize": 20,"pageNo": 1,"pageURL": "/method/tradeComment/list.htm?pId=4528&grade=&isFirst=true&pageNo=","beyondPage": False,"length": 8,"slider": 1,"message": "","list": [{"id": 1436,"createDate": "2024-09-16 10:46:20","updateDate": "2024-09-16 10:46:20","commentId": 1436,"storeId": 1814,"skuId": 18197,"orderId": 18042500001011,"content": "测试测试测试测试","grade": "5","productScore": "","serviceAttitudeScore": "5","deliverySpeedScore": "5","type": "0","isShow": "1","tradeCommentImageList": [],"uid": 621,"pid": 4528}],"html": "<ul>\n<li class=\"disabled\"><a href=\"javascript:\">« 上一页</a></li>\n<li class=\"active\"><a href=\"javascript:\">1</a></li>\n<li class=\"disabled\"><a href=\"javascript:\">下一页 »</a></li>\n<li class=\"disabled controls\"><a href=\"javascript:\">跳到 <input type=\"text\" value=\"1\" href=\"/method/tradeComment/list.htm?pId=4528&grade=&isFirst=true&pageNo=\" onkeypress=\"var e=window.event||this;var c=e.keyCode||e.which;if(c==13)window.location.href=this.getAttribute('href')+(this.value)\" onclick=\"this.select();\"/> 共 4 条</a></li>\n</ul>\n<div style=\"clear:both;\"></div>","firstResult": 0,"maxResults": 20},"isFirstPage": True,"grade3Count": 0
}# resp = make_response(data)return dataapp.run("127.0.0.1", 8888)
- data 字典为响应报文。
注意
- 使用flask写接口响应时,请求方式中要运行 OPTIONS
- 还需要加入 CORS
实例
1、XSwitch设置好代理地址
2、python flask 写好模拟返回端
3、浏览器再次请求,返回测试桩响应的报文
真正的请求被代理到了 http://127.0.0.1:8888/test1
上