【软件测试】--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:\">&#171; 上一页</a></li>\n<li class=\"active\"><a href=\"javascript:\">1</a></li>\n<li class=\"disabled\"><a href=\"javascript:\">下一页 &#187;</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

相关推荐
嘻嘻哈哈樱桃3 分钟前
牛客经典101题解题集--贪心算法+模拟
java·python·算法·贪心算法
安畅检测齐鲁物联网测试中心28 分钟前
软件测试到底能不能找出所有问题
自动化测试·软件测试·静态测试·风险管理·缺陷识别
BU摆烂会噶1 小时前
【LangGraph】持久化实现的三大能力——人机交互
数据库·人工智能·python·langchain·人机交互
.柒宇.1 小时前
AI掘金头条项目部署实践指南
linux·运维·python·fastapi
WL_Aurora1 小时前
Python 算法基础篇之树和二叉树
python·算法
小郑加油1 小时前
python学习Day11:认识与创建CSV文件
开发语言·python·学习
Pkmer1 小时前
Java程序员大战Python面向对象
python·ai编程
小龙报1 小时前
【Coze-AI智能体平台】低代码省时高效:Coze 应用开发全流程指南
java·人工智能·python·深度学习·低代码·chatgpt·交互
技术钱1 小时前
LCEL表达式与Runnable可运行协议
python