大家在日常开展自动化测试工作时,为了 保证接口测试的有效性 ,少不了要对接口返回的响应字段进行 校验 、 断言 等操作。当接口返回的字段数量本身就很少时,接口断言操作一般都很容易就能实现,但当接口的返回字段特别多,结构特别复杂时,例如响应字段数量达到了成百上千时, 如何快速实现全部返回字段的校验? 这类问题,相信困扰了很多的正在开展接口测试的小伙伴。
今天针对 如何快速审核接口返回值全部字段问题 ,分享一些解答思路,希望能帮到大家~
其实解决上述之类问题,市面上常见的解决方案有两类:
根据业务校验需求,自定义开发校验规则库
借助现有的第三方库
今天,我们先来聊聊,如何借助现有的第三方库来解决: 快速校验API接口返回的全部字段 。由于当今大部分接口都是基于Restful API,后续我介绍中,我们假设接口响应体格式以JSON为例。
要满足上面的实现需求,第三方库方案有很多,比如常见的就有: deepdiff 、 difflib 、 json-diff 、 json_tools 等,这些三方库之间,都有各自侧重点,本篇文章,重点介绍: 如何借助DeepDiff库来解决快速校验接口返回字段的问题 。
一、认识一下,DeepDiff 介绍
Deepdiff 模块常用来校验两个对象是否一致,并找出其中差异之处。其中提供了三个类,DeepDiff,DeepSearch和DeepHash,官网地址: https://deepdiff.readthedocs.io/en/latest/ ,当前最新版本为: V5.5.0
主要组成部分:
DeepDiff:比较两个对象,对象可以是字段、字符串等可迭代的对象,针对对象的深层差异,递归查找所有更改。
DeepSearch:在对象中搜索其他对象
DeepHash:根据对象的内容进行哈希处理
DeepDiff 的初衷是用来找出不同数据的差别,可以比较 JSON 、 XML 文本类的,也可以比较 图片 ,在使用了一下之后,其实我们完全可以直接使用它作为测试的断言,这也是 从另一个思考角度提供了一种全新的校验思路 。
二、DeepDiff 使用
当你看完上述的介绍,相信还是一脸懵,不知如何下手,接下来,就通过几个案例来进一步感受一下 Deepdiff 的功能和作用。
使用之前,先安装:
pip install deepdiff
2.1 案例一:比较两个JSON
利用Deepdiff