APIObject 模式与原则
在普通的接口自动化测试中,如果接口的参数,比如 url,headers 等传参改变,或者测试用例的逻辑、断言改变,那么整个测试代码都需要改变。APIObject 设计模式借鉴了 PageObject 的设计模式,可以实现一个优雅、强大的接口测试框架。
理念
APIObject 设计模式可以简单分为 6 个模块,分别是 API 对象、接口测试框架、配置模块、数据封装、Utils、测试用例。
- 接口测试框架:base_api,完成对 API 的驱动
- API 对象:继承 base_api 后,完成对接口的封装
- 配置模块:完成配置文件的读取
- 数据封装:数据构造与测试用例的数据封装
- Utils:其他功能封装,改进原生框架不足
- 测试用例:调用 Page/API 对象实现业务并断言
枯燥的讲述概念可能难以理解,后面的章节都会围绕这个6个模块进行理论的拆解和实例的演示。
APIObject 模式应用
本章将结合企业微信的部门管理,获取部门列表接口作为一个接口测试用例,从没有封装到使用APIObject 设计模式进行封装改造。将实战与理论结合,更深入理解 APIObject 设计模式。
环境准备
企业微信服务端 API:
https://work.weixin.qq.com/api/doc/90000/90135/90664
不加任何封装和改造的企业微信,获取部门列表接口测试用例:
思路
改造后的文件结构:
- API
* base_api.py 是封装用来所有 API 的通用方法,比如打印 Log、对断言工具做二次封装等,不牵涉和业务相关的操作;- wework.py 继承 base_api 并实现基本业务,之后所有的具体的业务资源继承自 wework,比如 token 的获取等;
- department 继承自 wework,用来实现对应模块具体的业务逻辑,比如发送请求,请求内有什么参数等等。
- testcases 文件夹内统一存放所有的测试用例,调用 API 对象实现业务并断言;
- utils 文件夹内存放对其他功能封装,改进原生框架不足;
- data 文件夹数据构造与测试用例的数据封装;
此外,还有配置模块与数据封装会在后面的章节进行具体的介绍。
APIObject 实战
utils.py,在此文件中封装一个 jsonpath 方法。
base_api.py,在此文件中调用utils中的jsonpath方法。
wework.py,继承类,实现 token 的获取。将在后面“通用 API 封装”章节中详细讲述函数内部的设计。
department.py,继承类,发起一个 get 请求,获取 department 的 list。
test_department.py,断言返回值中的第一个 name 是否为”WestWayyt”。
以上,更多接口测试框架实战进阶内容,我们在后续文章分享。
更多技术文章分享及测试资料
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!