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到扫描平台等功能,方便日常使用;
    不会炒菜的非专业测试人员
  • 相关阅读:
    CSS布局设计
    Gulp自动化构建工具的简单使用
    雅虎前端优化的35条军规
    CSS预编译器less简单用法
    java 数据相除
    idea 配置文件中文显示问题
    postgresql 表触发器
    postgresql 自定义函数
    postgresql 自定义聚合函数
    CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
  • 原文地址:https://www.cnblogs.com/carterzhang/p/7694995.html
Copyright © 2011-2022 走看看