【软件测试】--xswitch将请求代理到测试桩
背景
在做软件测试的过程中,经常会遇见需要后端返回特定的响应数据,这个时候就需要用到测试桩,进行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 CORS
app = 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 data
app.run("127.0.0.1", 8888)
- data 字典为响应报文。
注意
- 使用flask写接口响应时,请求方式中要运行 OPTIONS
- 还需要加入 CORS
实例
1、XSwitch设置好代理地址
2、python flask 写好模拟返回端
3、浏览器再次请求,返回测试桩响应的报文
真正的请求被代理到了 http://127.0.0.1:8888/test1
上