Skip to content

134.断言报错支持JSONPath显示

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

回顾

上一节我们成功录制了接口请求,俗话说: 温故而知新。还记得我们之前用JSONPath重构过我们的出参数据吗?

没错,我们今天要继续把JSONPath发挥到项目中.

断言中的路径

在接口测试中,断言经常需要展示JSON的具体节点(断言为什么不一致,所以需要展示完整路径),来看看我们目前是怎么做的:

可以看到,断言效果一塌糊涂/0这种显示方式,和我们之前的取参/JSONPath格格不入,那如果是这样的形式呢?

$[0] 在预期结果中不存在 ❌

虽然看起来没有好很多,但是实际上,我们统一了路径显示法则。这个举动的意义在pity中不亚于秦国统一度量衡。

改造

我们进入app/utils/json_compare.py文件,首页我们要调整开始路径,从/改为$

这样的话,起始路径就满足了JSONPath。

接着我们在每次断言失败后都加入一个标志: 【❌】,红色比较显眼,能一眼看到是错误。

类似于上图这样。

接着我们把用/连接2个路径的代码,改成.,也别忘了断言失败后加【❌】哦。

而数组我们一般在JSONPath里面用[数组索引]表示,所以我们把/0需要改成[0]

顺手,我们也把其他断言比如等于, 不等于给改改(在末尾加标识)

来看看最后的效果图

先不谈论效果是否比之前好,还是那句话,这是很有意义的一件事。

为Mock配置HTTP代理

我们知道,后续如果要做Mock功能的话,就需要经过一层mitmproxy代理。所以我们需要改造我们的http客户端:

我们首先根据是否开启了Mock设置代理的地址,接着在request的时候带入这个proxy参数即可。

这个效果就和我们windows机器开启代理,aiohttp的http请求都会经常这层代理,也就能为mock做铺垫了~


今天的内容就介绍到这里,下一节我们来编写har转pity用例相关部分,我们会分2步,先将har转换为RequestInfo数组,后面就是通用的部分:

将一组RequestInfo转为pity用例(这块会复杂一些),加油~