zoukankan      html  css  js  c++  java
  • 日常问题记录--使用fiddler自动响应jsonp结构的响应

    #问题表现#

    在使用fiddler做对请求做mock时,有时需要对jsonp格式响应进行映射;

    jsonp响应的特点为callback为一个随机字符串;

    使用普通的fiddler 做mock无法进行正常mock;

    #解决办法#

    1. 保留响应中的callback函数名;
    2. 替换响应内容;

    #实现#

    1. fiddler修改脚本,增加读取本地文件内容的函数;
    2. 修改OnBeforeResponse,替换响应内容;
    3. 下面代码快中OnBeforeResponse被注释的部分根据url中关键词进行替换;
    4. 注意本地文件的编码需要与请求的编码一致;
      static function readFile(filename)
        {
            var fso = new ActiveXObject( "Scripting.FileSystemObject");
            var f = fso.OpenTextFile(filename, 1);
            var s = "";
            while(!f.AtEndOfStream)
                s += f.ReadLine();
            f.Close();
            return s;
        }
    
        static function OnBeforeResponse(oSession: Session) {
            if (m_Hide304s && oSession.responseCode == 304) {
                oSession["ui-hide"] = "true";
            }
            
        /*    if(oSession.url.indexOf("RrjfGetJifenPointList") > 1){
                oSession.utilDecodeResponse();
                var body = oSession.GetResponseBodyAsString();
                var string = readFile("C:\Users\xxx\Desktop\aaabbb.txt");
                var index = body.indexOf('(');
                var b = body.slice(0, index);
                body = b + '('+ string + ')';
                oSession.utilSetResponseBody(body);
            }
          
            if(oSession.url.indexOf("RrjfGetAssistUserList") > 1){
                oSession.utilDecodeResponse();
                var body = oSession.GetResponseBodyAsString();
                var string = readFile("C:\Users\xxx\Desktop\aaabbb.txt");
                var index = body.indexOf('(');
                var b = body.slice(0, index);
                body = b + '('+ string + ')';
                oSession.utilSetResponseBody(body);
            }
    */ if(oSession.url.indexOf("CommonAppointSubmit") > 1){ oSession.utilDecodeResponse(); var body = oSession.GetResponseBodyAsString(); var string = readFile("C:\Users\xxx\Desktop\aaabbb.txt"); var index = body.indexOf('('); var b = body.slice(0, index); body = b + '('+ string + ');}catch(e){}'; oSession.utilSetResponseBody(body); }
    }

    #其他#

    1. fiddler使用微软的JScript,而JScript是可以对windows本地文件做读写,注意包括写操作;
    2. 后续想编写一个自己的fiddler插件,实现jsonp的mock,自动生成jmeter用例,上传指定url到扫描平台等功能,方便日常使用;
    不会炒菜的非专业测试人员
  • 相关阅读:
    jquery_ajax 地址三级联动
    delphi窗体按钮灰化禁用
    sqlserver查找断号,回收单据号
    query.locate过个过滤参数
    StringGrid换行功能
    你不知道的JavaScript--Item13 理解 prototype, getPrototypeOf 和__proto__
    你不知道的JavaScript--Item12 undefined 与 null
    你不知道的JavaScript--Item11 arguments对象
    你不知道的JavaScript--Item10 闭包(closure)
    你不知道的JavaScript--Item9 call(),apply(),bind()与回调
  • 原文地址:https://www.cnblogs.com/carterzhang/p/7694995.html
Copyright © 2011-2022 走看看