接口测试 小白提问,接口测试需要断言哪些参数?

wangwangtest · 2023年04月12日 · 最后由 知無涯 回复于 2023年04月16日 · 7757 次阅读

假设现在有一个新增商品的接口,返回的参数中有新增商品的 id(每次返回的 id 都不一样)、success(判断是否成功,0 失败 1 成功)
1.接口测试,断言的时候是否需要断言 id,还是说只需要断言 success 等于 1 就行?
2.如果需要断言 id,是断言 id 不为空即可,还是说从数据库中取新增商品的 id 和接口返回的 id 进行比较,断言是否相等,这种比较有必要吗?

共收到 7 条回复 时间 点赞

在接口测试中,通常需要根据接口返回结果进行断言验证。如果接口返回的新增商品 id 对后续的业务流程具有重要的作用或者需要记录日志,那么需要断言新增商品 id。否则,只需要断言 success 等于 1 即可。

如果需要断言新增商品 id,可以根据具体情况选择不同的实现方式。通常情况下,可以简单地断言新增商品 id 不为空来验证是否成功新增了商品。但是,在一些特殊场景下,比如需要对新增商品进行进一步操作或者和其他数据关联时,可以从数据库中取出新增商品的 id 并与接口返回的 id 进行比较,以确保新增商品 id 正确无误。这种比较在数据关联性较强的场景下是有必要的。

连 sql 对比数据库新增是否正确啊

两种方式都可以,结合起来用最好。
比如:

  1. 断言接口返回的 statusCode 和 message,这个根据接口返回来定;
  2. 通过 pymysql 等框架来检查数据库中真的插入了这条新增的商品。这次验证内容更多,说明这条数据后台处理后是真的插入到数据库里了。

我个人建议不要校验数据库
理由:为开发这次改了 A 表,你校验 A,如果开发后面除了改 A,也改了 B 表,而你仍然只校验 A,那么 B 没校验就算漏测,所以干脆不要校验数据库,直接校验接口业务逻辑即可。

综上,该接口需要校验的部分如下,欢迎喜欢校验数据库的拥趸来喷我,在线应战!
1.判断接口返回了 success,且 id 不为空
2.另外的业务肯定有用到这个 id,用这个 id 去发送该业务的 get 请求,看返回的内容是不是刚才添加的内容

3楼 已删除
树叶 回复

同意你的观点,一直认为没有必要去校验数据库,个人观点,自动化测试是将手工测试以脚本的方式实现,难道你手工测试的时候,每次插入一条数据,都会去数据库查询一下吗,以新增商品为例:测试逻辑肯定是,新增之后,查看列表中是否存在,以及商品详情是否与添加商品时填写数据一致,为什么非要去查询数据库呢?你能保证你写的 sql 一定是对的吗?

树叶 回复

我认为接口测试 更多应以单个接口为测试维度。

  1. 怎么保证落表的数据就是对的?
  2. 就算所有系统都有一个 get 请求可以查询到数据,怎么保证查询出来的数据就是对的?
  3. 此外,就算按你的方法测试,怎么保证查询出来的数据就是全的?
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册