在实际的工作中,接口测试可能是后来才会提上来的,这样接口测试的用例就会特别少,如何快速的产生大量的接口用例,也是一大需求,当我遇到这个问题,我就想着,能不能通过一种方式将功能测试的接口请求转化为接口功能测试用例。找到了一个开源的工具--mitmproxy。
安装命令:
代码语言:javascript复制pip install mitmproxy
安装后呢,
用mitmweb 可以启动,在命令行。启动的是一个带有界面的,大致是这样的,
我们先看看我改写后的。
那么我们看看 怎么去改写成上线我这样的功能呢。
首先,修改端口号,因为我们可能是需要定制我们的监听端口号,
那么我们去看看源码中哪里可以修改。
我一般都是用pycharm去看这些源码的,lib下面的是官方的包,
site-packages是我们自己安装的。
我们去site-packages去找我们安装的包。
这大概是下面所有的包和文件,我们去看看这里面有没有我们要改写的东西。经过查找,我在options找到了修改listenprot的地方,修改下这里就可以让我们监听的端口改成我们想要设置的。
这样修改完,我们的监听端口得到了修改。
其实对于打开地址的修改我们也是可以做到的。在tools目录下面的web里面有一个webaddons.py 可以修改web端口和web监听的地址。
那么我们看看前端页面去怎么修改,因为只有改了前端页面,我们这个需求才是完整的。可能端口我们就不用修改,但是我们一定要去改前端页面去适配这个改变。
前端页面,我是经过判断 应该在web目录下面有静态文件,我们要去的就是去找到这个静态文件,
我们可以看到这里的静态文件都是来自于static文件,我们看看有几个js文件,我们去找找 应该对应的改动就在这里的js里面
我在这里就是拿着页面的功能的按钮的文字去搜索,经过在文件中的搜索,我找到了这个文件是app.js,那么我们就着手对这个文件去改写。
代码语言:javascript复制_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 函数内。
这样我们还要给我们的功能增加一个多选框。这里需要增加。
代码语言:javascript复制 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];
代码语言:javascript复制 function InputColumn(e) {
var t = e.flow;
return _react2.default.createElement("td", {className: "inputtype"},_react2.default.createElement("input", {className:"sendcase",type:"checkbox",Name:"changecase"}))
}
代码语言:javascript复制 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;
这样 就完成了改造,然后启动就可以。
这里就是前端页面的改造,后续有机会,我会说后台拿到这个页面怎么去改写后台,抓到的数据怎么入库。
关注雷子说测试,不定期的去分析精华。
测试技术没有边界,勇往直前。
最好的奋斗在青春,努力拼搏。
永无止境的去探索,相信自己。
前途路漫漫修远兮,敢于探索。
如果感觉有用,请分享或点在看给更多的人。让大家都受惠。
雷子说测试与你不见不散。