【软件测试】--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

相关推荐
好看资源平台32 分钟前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂1 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc1 小时前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤1 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~1 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang1 小时前
python如何使用spark操作hive
hive·python·spark
q0_0p1 小时前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码1 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇1 小时前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow