Skip to content

130.用例生成之熟悉mitmproxy

大家好~我是米洛
我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。
欢迎关注我的公众号米洛的测开日记,获取最新文章教程!

这段时间一直忙于打造自己熟悉的编辑器,所以包括pity还有对应教程都有点滞后。不过这都没关系,马上就端午了,可以继续了!

回顾

记得上一节我们完成了出参相关的改造内容,之前有个大佬@晴天问我,是否考虑在pity里面加入如下的功能:

打开浏览器,进行一系列操作,而后就可以得到一个测试用例。

这个东西老实说,我没做过,但是我觉得还是很有价值的。通过录制用户的操作,形成类似har的文件,接着导入到pity。而且只要中间文件一致,那就可以实现很多平台的无缝对接,比如:

  • httprunner
  • postman
  • har
  • jmx

这些都是很常用的其它平台/框架的数据,如果能支持到录制生成用例,那么导入导出其它平台的用例数据也不在话下。可谓是一举多得,所以这就是我打算近期做这个的原因。

思路

其实我是没什么具体的思路,只有一个大概的方向,我先梳理一下:

  1. 通过录制浏览器/app请求,获得每个接口的请求入参/出参/header等信息
  2. 解析这些数据,生成一个临时的中间数据,可以是har也可以是json,这个无所谓
  3. 解析中间数据,将之转变为pity的用例

听起来很简单吧?感觉好像是的,不过解析中间数据那里估计会有一些坑,比如用例之间依赖的数据,这块可能是个难点,除此之外,其他的应该都不在话下。

怎么录制请求呢?

Python有一款比较推荐的工具:mitmproxy,这次我就不引用官网说法了,我直接简短介绍下:

mitmproxy是一个类似中间人的工具,当你挂上他的代理,你的所有请求都能被监听到,并且他还可以篡改你的请求,比如你请求www.baidu.com的时候,他给你返回:hello baidu,这也意味着它有着在未来成为pity mock服务顶梁柱的潜力。

那我们先打入敌人内部看个究竟~

Mitmproxy

可以看到,mitmproxy,他本质还是一个代理。所以我们的工作模式是,配置好代理(给pity配置好代理,我们的http请求由pity发出)。

它本身呢,是有几种模式的:

  1. web端 这个就有点类似于Chrome开发者工具的F12,可以看到接口的请求信息
  2. mitmporxy 提供交互式终端
  3. mitmdump 提供非交互式终端

我个人感觉1和2用的多一点,看官网的例子,3主要是要导出录制的数据,不在我的计划之内。

在此之前我们先本地尝试一下,以我的老Windows为例:

  • 下载mitmproxy

首页截图第一个就是Windows的配置,我们直接下载即可。(如果是mac则需要brew install mitmproxy)

下载后安装即可。

  • 开启mitmproxy

简单地打开mitmproxy.exe即可,当然也可以用web版本的,只有开启后我们才能下载对应的证书。

  • 使用代理

在windows下,我们可以按Windows键,输入代理,如下图:

点击以后,进去配置对应的代理地址: 默认为localhost:8080, 也可以自己指定mitmproxy.exe启动的端口。

  • 下载证书

我们要先开启mitmproxy.exe或者web.exe, 只有开启后,我们才能下载证书。

浏览器打开: http://mitm.it/

根据具体的指引进行安装即可,一般是下载一个cert证书,安装到本地并取得计算机的信任即可。


接着我们就可以在对应的mitmproxy.exe的窗口看到我们的录制请求了。

今天的内容到这里就结束了,下一节我们继续学习mitmproxy获取录制http请求相关内容,去编写具体的录制回放请求。