Fiddler插件---将Mapi请求自动转为HTTPRunner测试用例(YAML格式)
背景
继之前鼓捣出了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格式)的更多相关文章
- Chrome禁止http自动转为https
解决方法 在Chrome浏览器地址栏输入chrome://net-internals/#hsts 在Delete domain security policies 中输入要删除自动转换的域名 原因 将 ...
- Fiddler插件 --- 解密Elong Mapi请求参数及响应内容
当前问题: 在我们日常的Web/App测试过程中, Fiddler是一大辅助利器:在我们团队,也经常使用Fiddler进行App抓包测试. 艺龙 App使用的REST(内部称为Mapi)接口,在使用过 ...
- fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)(转)
fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤) Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或 ...
- Fiddler抓取https请求 & Fiddler抓包工具常用功能详解
Fiddler抓取https请求 & Fiddler抓包工具常用功能详解 先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...
- fiddler抓取https请求
Fiddler抓取https设置详解(图文):https://www.cnblogs.com/joshua317/p/8670923.html Fiddler要抓取到https请求我们还需要Fiddl ...
- 自定义Fiddler插件二
在之前博客自定义Fiddler插件一中主要是实现了IRequestInspector2接口,这个接口主要是针对单个请求的,在写接口测试案例的时候也是对一个接口进行处理,如果想批量进行操作,那就可以使用 ...
- 自定义Fiddler插件一
上个月自定义了一个Fiddler的插件,可以根据请求生成接口自动化测试的RF和Python代码,这样测试人员只需要手动操作页面用Fiddler抓取报文,就可以直接生成RF.Python代码,然后只需要 ...
- Fiddler抓取HTTP请求
参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...
- Fiddler抓取HTTP请求。
参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...
随机推荐
- 【Python challenge】通关代码及攻略(0-11)
前言: 最近找到一个有关python的游戏闯关,这是游戏中的思考及通关攻略 最开始位于:http://www.pythonchallenge.com/pc/def/0.html 第0关 题目分析 提示 ...
- web安全测试--环境搭建
本博客主要作为作者的学习笔记,请勿装载. 作为一个安全测试的入门选手,一切操作在虚拟机中进行是最保险的. 第一先下载自己喜欢的虚拟机,我的笔记本用的VirtualBox(下载地址:https://ww ...
- 对时间进行操作 加减 XXX天
date:要操作的时间目标 days: 要加减的天数时间 addDate: function(date, days) { if (date == '') { return '' }; if (days ...
- mysql那些事之索引篇
mysql那些事之索引篇 上一篇博客已经简单从广的方面介绍了一下mysql整体架构以及物理结构的内容. 本篇博客的内容是mysql的索引,索引无论是在面试还是我们日常工作中都是非常的重要一环. 索引是 ...
- go源码分析(五) 获取函数名和调用者的函数名
参考资料 实现代码保存在我的github // input flag 1:FunName 2:CallerFunName func GetFuncName(flag int) string { ...
- 基于奇林软件kylinTOP工具的HTTP2协议的压力测试
1.HTTP协议概述 说到http,那就应该先了解一下http协议的发展历史.关于http协议的历史,可以参考阮一峰老师的这篇博客文章HTTP 协议入门,里面介绍的比较详细了.简单来说http先后存在 ...
- GitHub 热点速览 Vol.12:不可思议的浏览器 browser-2020 周涨 star 超 3 千
作者:HelloGitHub-小鱼干 摘要:本周的 GitHub Trending 像极最近的天气,温暖如春突然来个急降温.新晋 GitHub 项目重启屈指可数的模式,好在老项目们表现甚好.比如一周就 ...
- MyBatis框架——动态SQL
MyBatis 作为⼀个“半⾃动化”的 ORM 框架,需要开发者⼿动定义 SQL 语句. 在业务需求⽐较复杂的情 况下,⼿动拼接 SQL 语句的⼯作量会⾮常⼤,为了适⽤于不同的业务需求,往往需要做很多 ...
- Journal of Proteomics Research | 利用混合蛋白质组模型对MBR算法中错误转移鉴定率的评估
题目:Evaluating False Transfer Rates from the Match-between-Runs Algorithm with a Two-Proteome Model 期 ...
- hbase 面试问题汇总
一.Hbase的六大特点: (1).表大:一个表可以有数亿行,上百万列. (2).无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一个表中的不同行的可以有截然不同的列. (3) ...