问答 pytest+requests+excel 的接口测试脚本中,如何运行 修改 和 删除 这类要传 id 的接口

小白 · 2022年02月28日 · 最后由 斯汀030 回复于 2022年02月28日 · 4218 次阅读

我是想写一个能一直跑的接口测试脚本,使用 excel 中的数据做数据驱动,用 excel 主要是想方便其他测试同事添加接口。
但是在写的过程中,发现 修改 和 删除 类的接口需要传 id,我一开始只是想的简单的把请求该列表中返回的数据 id 保存下来,我试了两种方法都不行,
第一种是在类的初始化的时候定义一个 self.id = None ,然后下面代码跑到请求该列表的接口的时候把 id 提取并保存到 self.id 中 ,但是跑到需要传 id 的编辑或删除接口的时候,就会发现没有值传进去。excel 端我是这么写的:{"schemeId" : self.id}。

第二种我是直接在参数化里面写了一个 id = None,但是这样就更不行了,每个用例运行完了后,都会重置 id = None。

还有一种是想法,但是太麻烦了。我们的接口新增数据成功的时候是不会返回数据 id 的,但是我们的产品有很多种数据,所以就会有很多个 list 接口。
我是想封装一个可以获取所有 list 接口 id 的函数
函数如下:

excel 中传的参数如下:
{"imgList":["2022/02/d9e3cc8612ec41e59b56078b2f02625c.PNG"],"billIdList":[get_all_id(setHost,setToken,"/bill/billList",{"type": 1})]}
其他同事只需要增加这一段:"/bill/billList",
{"type": 1}
但是,传这一段中的 **{"type": 1} 也有点麻烦,怕他们调用 get_all_id()方法的时候会记不住要传哪些东西,可能也会为难到其他测试同事(功能测试),所以大家有没有方便一点的方法?
麻烦指教!谢谢各位!

共收到 6 条回复 时间 点赞

我是这么做的:修改、删除这种需要传已有数据的 id,我就在运行这种用例之前 setup 初始化所需的数据,然后拿它的 id 给后面修改、删除来使用。最后无论用例成功还是失败,teardown 都做清除之前初始化的数据

使用固定 id,运行测试用例之前,初始化数据库,用例执行完以后,再删除数据库。

明白,这个方法确实比我的好一些,但是这样就得生成和数据种类同等数量的变量名,有没有办法全部的需要的 id 都囊括其中,只取一个变量名的方法呀

大瓶子 回复

你是说在初始化的时候就创建测试数据吗

小白 回复

嗯嗯,是的

有没有试过用反射😀

小白 关闭了讨论 03月08日 18:14
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册