Python 小章的自动化接口日记和生活分享 --- 多参数查询接口数据校验暂时解决方法(也不知道对不对)ヾ (◍°∇°◍) ノ゙

哇咔咔 · 2021年03月31日 · 最后由 sunzhang 回复于 2023年07月10日 · 2651 次阅读

我也不知道对不对,反正就瞎撞吧,也没人教,暂时就这样吧
这是我遇到的问题:

@haijunjiao 感谢大佬提供的思路

我大致是按照这样做的:首先我觉得这种查询接口单纯去校验它通不通肯定是不行的,因为没意义,所以一定要校验它里面的内容对不对。按照网友提供的解决思路可以先获取请求把数据提取保存起来,作为 case 的标准答案。然后我在写测试 case 的时候,把取到的数据和标准答案做对比,来断言它是不是一样。

刚开始的时候,我是有疑问的,因为你调用 2 次相同的请求得到的答案肯定相同啊,这样怎么能判断 case 到底有没有用呢,但是后来我想通了接口测试是一种回归测试,保存的标准答案的函数其实只需执行 1 次就行了,不需要每次执行 case 的时候都执行。

这是我的目录 result 放对比的答案

用 yaml 保存第一次取到的数据

这里面有一个 result.yaml 文件,刚开始的时候我是想把全部 case 取到的数据都保存在这么 yaml 文件里的,后发现不行,yaml 显示一大串的错误,怎么断言都跑不通

后来我一个 case 取到的结果,保存一个 yaml,,就是感觉好像文件有点多,看起来怪怪的,不知道对不对

最后总结下:多参数查询接口校验,case 断言的思路,跑 2 次接口,第一取标准答案存起来,第二次取得的数据与第一次取到的结果校验,判断有没有改变

共收到 11 条回复 时间 点赞

请问下对于有些接口,返回中并没有 data,只有返回状态之类的,那我们没办法做数据性校验吗

接口的数据事先保存下来,当做标准,后面根据这个标准验证,请问是验证接口的格式吗,对于数据变化不能检验吧,数据多了或者少了,使用 sql 会不会更准确一点呢

@stone9159 SQL 比对,回归的时候不行吗,请问问题在哪,我都是 sql 比对,比如数量对不对,等,就想一个简单的查询接口,需要接口返回的 data 中的 list 都要与数据库中一一比对吗,请大佬指点!!!

对于接口回归测试而言,环境对比维护成本更低,而且更准确,前提是有不同环境

以前都是自己写 sql,用 sql 的结果去对比,忽略了接口测试是做回归的

对比上次响应数据这个始终有点问题,如果中间某个字段值变了就挂了,可以看下这个开拓下思路https://testerhome.com/topics/22561

Oliver_lin 回复

对的,相当于在接口确认没问题后,自动把响应记录下来,作为下一次测试的断言。当然有些不需要校验的字段,要通过一些比较简便的标记标记出来。

陈恒捷 回复

请问下自动录制脚本的思路,是如果需要数据的时候通过接口拿到响应保存下来吗

大佬什么的真不敢当,1L 恒捷是真大佬,而我只是个涉世未深的孩纸,仅仅是因为项目相似而有了所谓的经验罢了~~

刚开始的时候我是想把全部 case 取到的数据都保存在这么 yaml 文件里的,后发现不行,yaml 显示一大串的错误,怎么断言都跑不通

看了下你写的 yaml 文件,感觉是格式有问题,可以了解一下 yaml 文件如何在自动化测试中灵活运用,大致可以理解为字典的用法。这样可以在一个 yaml 文件中放多个 case 的校验内容,不显得过于累赘。当然,恒捷提到的录制生成 yaml 听起来更好,有机会我也尝试学习一下~

陈恒捷 回复

好,我去学习下

查询类用这个思路是没啥问题的,但人工维护成本会比较高,建议补充一些自动录制生成 yaml 的功能,否则成本略高。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册