问答 接口自动化测试遇到字段有近百个值的时候,怎么断言?

芒果 · 2022年07月06日 · 最后由 哪里不会点哪里 回复于 2023年03月03日 · 10218 次阅读

我自动化的经验比较少,一直都不擅长自动化的断言,以前用的方法是:测试数据放在 yaml 中,新增,然后预期结果跟 sql 查询结果对比;查询,接口返回数据跟 sql 查询数据对比。最近遇到个新项目,很多接口都是几十个,近百个字段,有点懵,不知道怎么样写能方便点?求各位指点🙏

共收到 18 条回复 时间 点赞
仅楼主可见

联系开发,对关键字段进行校验即可。或者对字段数量进行校验。通常情况下,没有必要对字段做逐一校验,选择能反应业务是否正常的判断逻辑即可。

七星瓢虫 回复

json schema,这样不是有很多个 Schema 文件,维护起来也不方便吧

最近参考的是 jsonpath,deepdiff,还有社区有个第三方库:https://testerhome.com/topics/22561
目前采用的方案是 deepdiff 第三方库

全值断言、局部断言,拿你要比对的部分就行

jsonschema 以及关键字段就行

有条件的话可以考虑用流量回放

建议 schema 特殊的字段校验直接写在 shchema 内了

我这边的做法,希望对你有帮助,接口返回断言
总体兜底: json schema 或者正则
详细用例: json path 或者其他方式,断言指定字段内容

这近百个值都是你想要的吗?如果是的,那就都对比吧,如果不是,取关键字段就好了呀

看你校验颗粒度
1、大范围的就对比两个 json Assert Equal response.text expect_json
2、校验你想校验的关键几个
3、数据驱动,把一个个接口字段及期望值做参数化

对比 jsonschema

Pactortester 回复

对比 json 了,还要校验关键字段?

1.对比 json
2.校验关键字段

对比两个 json 就行了吧~

我都是一整串 全部比对,,不过这样的话,如果返回的字符串稍微一改动,就需要批量维护,工作量挺大

var rstAct = apiX();
Assert.AreEqual(rstExp, rstAct);

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