接口测试 萌新提问,接口自动化测试,接口请求参数依赖于某些数据,如何构造呢

wangwangtest · 2023年08月01日 · 最后由 kun 回复于 2023年08月21日 · 6239 次阅读

比如有一个获取商品库存的接口,想要获取某个商品的库存,必须要有该商品吧

用的 pytest+yaml,目前想到这些方式

预置数据(使用已有的商品)

1.通过手动创建商品,在请求中,直接把商品写死

2.通过查询商品接口,获取已有的商品 ,写入请求中

动态创建商品

3.通过新增商品接口,获取新增的商品 ,写入请求中

这三种方式哪种比较好呢,或者说有更好的方式,求教,十分感谢

共收到 5 条回复 时间 点赞

1、存量商品可以写死一个之前已有的商品(如果怕被人误删或者误改,可以写个方法每次执行前插入 or 更新数据库的对应数据)
2、新增商品接口,获取新增的商品
建议以上都考虑实现,因为分别覆盖的是存量和新入库商品的场景,都需要测试覆盖

看场景。

如果是单接口测试,那前置条件越简单稳定越好。这种场景推荐方法 1

如果是场景测试,比如要完整走一遍 创建 - 获取库存 - 购买 - 减库存 ,那需要用方法 3

方法 2 个人不是很推荐,因为测试环境数据比较多样,且有可能存在脏数据。直接获取已有商品有可能获取到脏数据,导致不稳定。

我的理解:
你要获取商品库存,首先数据库要有商品,不管是涉及 1 张表还是 2 张表,这是必备条件。
一般是 2 张表的方式,比如:
A 表字段:商品 ID,商品名称
B 表字段:商品 ID,库存数量
所以要确定的是

  1. A 表中的所有商品 ID,在 B 表中得有,哪怕库存数量为 0,这是前提条件
  2. 并且这个前提条件的实现方式,一定是测试前造数据,或执行用例时动态造,有这两种方式来完成

那么操作步骤,一定是先查询,或先创建再查询,意味着你可以查到一个商品 ID 的集合,比如查前 10 条
然后构建一个随机选择的方式,得到某个商品,最终,你就可以调接口看返回值了。

这边推荐用 3 可以适应各种环境 减少静态数据的依赖可以让自动化在各种环境游刃有余

看实现成本和维护成本
1、除非是数据的动态构造比较麻烦,一般使用动态实现适配各个环境,并且避免静态数据被偶然篡改造成的不稳定
2、动态准备数据可能降低用例执行通过率以及增加执行时长,可以用异步方式提前准备并写入自定义数据库或缓存中,执行时直接使用

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