背景

  继之前鼓捣出了Mapi解密插件之后,在团队内已经使用了三年之久,一跃成为团队最爱欢迎的测试工具之一(加个之一,低调谦虚一点)。

  随着团队推行HttpRunner搞接口自动化;编写和维护Case带来的工作量成为同学们最头疼的事情;木有之一。HTTPRunner要求Case格式是YAML的;而我们的参数都是JSON的;每次编写新Case都要在二者中不断的转换,折腾的欲仙欲死。看着兄弟们日益低落的状态;我慢慢意识到,是时候再做点什么改进了。

  这时候新来的同事小青提出建议----能不能把Mapi请求导致为HAR文件,然后通过HTTPRunner的 har2case命令转成Case;这样不是快多了吗?

  小伙子有想法啊,不愧是我招进来的人!

  可既然最终目的是要转成YAML格式的Case;我为什么不直接转成Case?脱裤子放X先转成Har的事,咱可不干!

  打开尘封已久的C#工程;看了下git记录,上一次的提交还是一年多以前;稍微理了理思路,然后打开浏览器并飞速敲下了 google.com.hk;什么,为啥不是baidu ? 明叔给你一个白眼并向你扔了一个二踢脚。

上集回顾:

 【FiddlerScript高级技巧---自定义Fiddler菜单】

上上集 。。。

 【Fiddler插件 --- 解密Elong Mapi请求参数及响应内容】

一、先看效果

二、实现原理

1、原始的Mapi请求;需要经过一次unzip处理,再进行一次AES解密,才能转换为明文的JSON;如下图 (其中 "api" 这个字段,是在Fiddler中处理后加上去的;为了方便在转化为YAML Case时,自动添加URL; )

2、用Python + Flask 实现接口 http://ip:port/ConvertToYAML ; 用于实现JSON到YAML TestCase 的转换

    智能替换;
通过转换后的结果图也可以看出;Flask接口在接收到请求后作默默地做了很多工作
1)实现了自动配置Config;自动绑定变量;自动登录并获取Token;
2) 在TestCase的Header里自动完成变量替换;如 deviceid version sessionToken等,
3)入参中若有日期相关的参数;也会自动替换为动态方法,动态获取日期值。
4)自动添加Hook函数;用于识别和处理Mapi请求

3、在Fiddler中将JSON入参和Header直接Post到上述接口中;并获取转换后的结果;

用接口处理转换,而不是在Fiddler插件中实现,是因为考虑到维护的灵活性;如何对用例的编写规范、模板等有变更 ,直接修改接口就好;不用每次发新的插件包来更新Fiddler客户端。

三、使用方法

 更新插件后,直接在查看入参的文本框中右键 ---【转换为YAML】即可;然后可以一键保存到自动化工程目录下稍作修改就可以提交git了

 需要进一步处理的地方如下(把大象装进冰箱分几步?):

    1、修改用例作者 (author 字段值)
2、修改CaseName ;
3、添加需要的断言

PS: 相比之前手撸Case代码,是不是快了不少呢

Fiddler插件---将Mapi请求自动转为HTTPRunner测试用例(YAML格式)的更多相关文章

  1. Chrome禁止http自动转为https

    解决方法 在Chrome浏览器地址栏输入chrome://net-internals/#hsts 在Delete domain security policies 中输入要删除自动转换的域名 原因 将 ...

  2. Fiddler插件 --- 解密Elong Mapi请求参数及响应内容

    当前问题: 在我们日常的Web/App测试过程中, Fiddler是一大辅助利器:在我们团队,也经常使用Fiddler进行App抓包测试. 艺龙 App使用的REST(内部称为Mapi)接口,在使用过 ...

  3. fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)

    fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...

  4. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  5. fiddler抓取https请求

    Fiddler抓取https设置详解(图文):https://www.cnblogs.com/joshua317/p/8670923.html Fiddler要抓取到https请求我们还需要Fiddl ...

  6. 自定义Fiddler插件二

    在之前博客自定义Fiddler插件一中主要是实现了IRequestInspector2接口,这个接口主要是针对单个请求的,在写接口测试案例的时候也是对一个接口进行处理,如果想批量进行操作,那就可以使用 ...

  7. 自定义Fiddler插件一

    上个月自定义了一个Fiddler的插件,可以根据请求生成接口自动化测试的RF和Python代码,这样测试人员只需要手动操作页面用Fiddler抓取报文,就可以直接生成RF.Python代码,然后只需要 ...

  8. Fiddler抓取HTTP请求

    参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...

  9. Fiddler抓取HTTP请求。

    参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...

随机推荐

  1. JavaScript的类数组

    类数组对象啊,被人问到它跟真正的数组对象有什么差别啊?说不上来就老埋汰了,只知道函数的arguments对象是个类数组对象,也有length属性,其他呢?干货奉上: 首先先说说数组吧: 1,当有新的元 ...

  2. IEEE1588 PTP对时系统原理及特点

    IEEE1588 PTP对时系统原理及特点 随着网络技术的快速发展,以太网的定时同步精度也在不断入提高,为了适应网络技术的变化,人们开发出了NTP网络时间协议来提高各网络设备的定时同步功能,但在一些对 ...

  3. 搭建私有 Nuget 服务器教程(1)

    对于 .NET 开发者来说,nuget 是必不可少的程序包管理工具.相应地,大部分开发团队都需要在内部搭建 Nuget 服务器,以管理私有 nupkg 包.本教程所使用的 Nuget 服务器,不是微软 ...

  4. 分布式框架Celery(转)

    一.简介 Celery是一个异步任务的调度工具. Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即 ...

  5. Linux系统之LNMP及nginx反向代理实现

    1.编译安装LNMP,并安装wordpress 首先准备环境,编译安装LNMP可以是多台主机,也可以是单台主机,把nginx,mysql,php都集中安装在一个主机上:我这里以一台主机为例吧!! 一. ...

  6. 机器学习实战 [Machine learning in action]

    内容简介 机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存.谋发展的决定性手段,这使得这一过去为分析师和数学家所专属 ...

  7. 在Servlet端获取html页面选中的checkbox值,request获取页面checkbox(复选框)值

    html端代码: 选项框: <input type="checkbox" name="crowd" value="选项一">选项 ...

  8. Natas18 Writeup(Session登录,暴力破解)

    Natas18: 一个登录界面,查看源码,发现没有连接数据库,使用Session登录,且$maxid设定了不大的上限,选择采取爆破. 源码解析: <html> <head> & ...

  9. IdentityServer4源码解析_1_项目结构

    目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4 ...

  10. Flutter 实现不同样式(有样式) 的TextField (可自定义),类似微博#话题#、@用户,(给TextField加TextSpan)

    描述 先上效果图 在项目中,有 @ 和 话题功能,需要在编辑时即可回显,但是官方原生的TextField不支持对部分文字定义不同的样式,所以封装了一个. 注意:这不是富文本插件,不支持在输入框中显示图 ...