Python pytest 接口自动化 testcase 问题

huidd · 2022年07月19日 · 最后由 huidd 回复于 2022年07月26日 · 9404 次阅读

用 pytest 写了个接口自动化的项目,测试用例是在 excle 维护。代码方面:考虑到接口请求方式、返回结果,有些接口需要引用别的返回接口返回值或者请求结果值保存后面接口使用,所以每个接口写一个 case,这样做合理吗? 看网上工程项目基本是每个接口都需要写一条 case,但是现在开发想让所有接口通过一个 case 来实现……………………这样合适么?

共收到 18 条回复 时间 点赞

描述很烂,和 pytest 无关,有个业务场景需要多个接口请求实现,先理清测试点,测某个接口的返回值就把需要依赖的接口写成前置数据。我建议你先把接口用例设计搞清楚再写脚本吧。。。一个接口一个 case 怎么得出的。。。

不需要为了参数依赖,每个接口写一个 case 吧,可以把参数依赖写一个通用方法去处理
1.用例执行完成后,使用 setatter() 把依赖参数存在内存中。
2.把需要依赖的其它接口的字段用形参替代,然后在请求时使用正则提取相关形参并使用 getatter() 进行替换。

有三条正在紧张审核中,我就不多做回复啦,可以了解下单接口和多接口的测试

谢大佬回复,描述的烂。一句话总结,pytest 下编写一个 testcase 处理去所有的接口吗?
已网上一段代码为例:
这块写一个测试用例去处理所有接口数据:

左边圈出来的这些是不是就没必要了,写一个通用的去处理所有请求。

懒人 回复

谢谢回复!先不管参数的依赖,,,,pytest 接口自动化写一个 case 来处理所有的接口数据?

huidd #11 · 2022年07月19日 Author

谢回复!我没有描述清楚吧,这个和单接口多接口关系不大,我的问题:pytest 会用一个 case 来处理所有的接口么?

huidd 回复

如果你只是想弄清楚可不可以,多和所有的性质其实是一样的。
如果你想问下各位大佬的经验,我这位菜鸟的经验是不会有这种场景。
所有接口都弄到一个 case 里面是可以实现的,但是后续呢?
和单接口单 case 的区别在哪?或者说优势意义在哪?
带来的只有一个结果:一次性用品,都谈不上耦合了

是不是可以单个接口维护,需要多接口复合场景时,取调用每一个接口,组成场景用例。不要单纯听开发意见如何处理。自信点,我要我觉得,不要你觉得

代码写的不好

每个接口单独写一个 cases,是可以的;但是后面接口的测试会用到前面接口的返回参数,要实现接口之间的依赖,也是可以的;
举例:下订单的接口需要用到登录接口返回的 token,那么在下订单这个接口 cases 中,可以写一个前置的类方法,setUpClass 实现,先登录登录后获取 token,接下来的下订单的接口测试就可以依赖 token,进行正常接口测试;只需登录一次,下订单的用例都可以进行使用;

自己写一层参数化,在 pytest 的参数化外层再加一层参数化,将接口数据作为参数传递到用例中,就可以实现一条用例跑完所有接口

huidd 回复

看看这个框架是否满足你
https://github.com/94louischen/test_api

通过静态模板文件结合 excel 接口数据生成 pytest 可执行的测试用例

考虑到接口请求方式、返回结果,有些接口需要引用别的返回接口返回值或者请求结果值保存后面接口使用,所以每个接口写一个 case,这样做合理吗?
合理。接口测试引用前置条件的接口返回值,这个是很常见的场景,若前置接口引用次数较多,需要把它列为单独的用例。

看网上工程项目基本是每个接口都需要写一条 case,但是现在开发想让所有接口通过一个 case 来实现……………………这样合适么?
不合适,前置内容应仅包含用例所需的内容,否则会有以下缺点
1.当获取所有的参数的方法/用例报错时,会影响到全部的用例
2.用例可读性较差,假如每个用例的第一步都为获取所有的参数的方法/用例,多人协作时无法知道前置步骤请求了什么接口,需要什么参数,带来维护上的成本

可以写流程性用例,所有接口串起来组成一个流程,这个感觉也好维护些。

huidd #17 · 2022年07月26日 Author
芜湖 回复

谢谢

huidd #18 · 2022年07月26日 Author
sunyb3 回复

涉及到流程的接口不多,主要还是想参数化测试每一个接口

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