一键将接口请求转为测试用例

发表于:2022-4-28 10:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:东风破李    来源:51CTO博客

分享:
  摘要:在实际的工作中,接口测试可能是后来才会提上来的,这样接口测试的用例就会特别少,如何快速的产生大量的接口用例,也是一大需求,当我遇到这个问题,我就想着,能不能通过一种方式将功能测试的接口请求转化为接口功能测试用例。找到了一个开源的工具--mitmproxy。
  安装命令:
  pip install mitmproxy
  
  安装后呢,用mitmweb ?可以启动,在命令行。启动的是一个带有界面的,大致是这样的:
  我们先看看我改写后的。
  那么我们看看 怎么去改写成上线我这样的功能呢。
  首先,修改端口号,因为我们可能是需要定制我们的监听端口号,那么我们去看看源码中哪里可以修改。我一般都是用pycharm去看这些源码的,lib下面的是官方的包,site-packages是我们自己安装的。
  我们去site-packages去找我们安装的包。
  这大概是下面所有的包和文件,我们去看看这里面有没有我们要改写的东西。经过查找,我在options找到了修改listenprot的地方,修改下这里就可以让我们监听的端口改成我们想要设置的。
  这样修改完,我们的监听端口得到了修改。其实对于打开地址的修改我们也是可以做到的。在tools目录下面的web里面有一个webaddons.py 可以修改web端口和web监听的地址。
  那么我们看看前端页面去怎么修改,因为只有改了前端页面,我们这个需求才是完整的。可能端口我们就不用修改,但是我们一定要去改前端页面去适配这个改变。?前端页面,我是经过判断? 应该在web目录下面有静态文件,我们要去的就是去找到这个静态文件。
  我们可以看到这里的静态文件都是来自于static文件,我们看看有几个js文件,我们去找找? 应该对应的改动就在这里的js里面。
   我在这里就是拿着页面的功能的按钮的文字去搜索,经过在文件中的搜索,我找到了这个文件是app.js,那么我们就着手对这个文件去改写。
  _react2.default.createElement(_Button2.default, {
                  title: "resvoer",
                  icon: "fa-exchange",
                  onClick: function () {
                      var names=document.getElementsByName("changecase");
                      var url=[];
                      var method=[];
                      var code=[];
                     for(var i=0;i<names.length;i++){
                         if (names[i].checked){
                             var allcheckout=(names[i].parentElement.parentElement);
                             url.push(allcheckout.getElementsByClassName("col-path")[0].innerHTML);
                             method.push(allcheckout.getElementsByClassName("col-method")[0].innerHTML);
                             code.push(allcheckout.getElementsByClassName("col-status")[0].innerHTML)
                         }
                     }
                     if(url.length>0){
                          var  ids=window.localStorage.getItem('id')
                         var da_ta={};
                         da_ta['url']=url;
                         da_ta['method']=method;
                         da_ta['code']=code;
                         da_ta['ids']=ids;
                         var urls=[];
                         urls.push(url);
                         $.ajax({
                      url: 'luru',
                      type: 'GET',
                      data: "url="+url,
                       contentType: "application/json; charset=utf-8",
                      processData: false,
                      success: function (result) {
                          window.localStorage.clear()
                         window.location.href=("http://127.0.0.1/case/luru/?"+"url="+url+"&data="+encodeURIComponent(url)+"&ids="+ids)
                      }
                  });
                     }
                  }
              }, "一键转换"))

  改动位于:FlowMenu 函数内。 这样我们还要给我们的功能增加一个多选框。这里需要增加。
  PathColumn.headerClass = "col-path",
              PathColumn.headerName = "Path",
              MethodColumn.headerClass = "col-method",
              MethodColumn.headerName = "Method",
              InputColumn.headerClass="checkout",
              InputColumn.headerName="选择",
              StatusColumn.headerClass = "col-status", StatusColumn.headerName = "Status", SizeColumn.getTotalSize = function (e) {
              var t = e.request.contentLength;
              return e.response && (t += e.response.contentLength || 0), t
          }, SizeColumn.headerClass = "col-size", SizeColumn.headerName = "Size", TimeColumn.headerClass = "col-time", TimeColumn.headerName = "Time", exports.default = [TLSColumn, InputColumn,IconColumn, PathColumn, MethodColumn, StatusColumn, SizeColumn, TimeColumn];
   function InputColumn(e) {
              var t = e.flow;
              return _react2.default.createElement("td", {className: "inputtype"},_react2.default.createElement("input", {className:"sendcase",type:"checkbox",Name:"changecase"}))
          }
   Object.defineProperty(exports, "__esModule", {value: !0}), exports.TLSColumn = TLSColumn, exports.IconColumn = IconColumn, exports.PathColumn = PathColumn,
              exports.MethodColumn = MethodColumn,
              exports.InputColumn=InputColumn,
              exports.StatusColumn = StatusColumn, exports.SizeColumn = SizeColumn, exports.TimeColumn = TimeColumn;

  这样 就完成了改造,然后启动就可以。
   这里就是前端页面的改造,后续有机会,我会说后台拿到这个页面怎么去改写后台,抓到的数据怎么入库。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号