问答 关于接口封装方式有个问题,想听听大家的建议

人形贪吃蛇 · 2023年03月15日 · 最后由 ccf 回复于 2023年03月22日 · 4100 次阅读

背景:每个页面按照单接口、按钮、检查点封装,现在不知道这三个东西放在一个菜单下维护好还是分开三个目录单独维护好

想法 1:
不同 menu 下面三个文件 api.py、button.py、check.py

想法 2:
api 下面不同 menu.py
button 下面不同 menu.py
check 下面不同 menu.py

第一种找起来和维护方便,第二个看着更清晰但找起来维护都麻烦,大家有什么好的建议么?

共收到 10 条回复 时间 点赞

想法 1。面向对象思想,api、button、check 要抽象出公共方法来

我一般就按页面来,里面的内容不会单独拎出来

Ouroboros 回复

页面接口业务比较多的话包含不同类型的很多内容,不方便维护的

alphSheng 回复

都有公共方法供调用了,但是不同页面都需要有这三种东西

封基本操作,跟业务有啥关系。。业务和检查点不应该是用例层才考虑的么。

https://martinfowler.com/bliki/PageObject.html 不要过度封装,按页面,需要啥封啥,看看 martin fowler 的 page object 思想

这是一个非常常见的问题,很多人在设计测试框架时都会遇到这个问题。其实,应该根据具体的情况来决定如何组织测试代码的目录结构。

想法 1 和想法 2 都是可行的。想法 1 将不同类型的测试代码分别放在不同的文件中,每个文件中包含多个不同的测试用例,可以更方便地进行分类和管理。想法 2 将相同类型的测试代码按照菜单进行分类,每个菜单对应一个文件,可以更方便地查找和管理特定菜单下的所有测试用例。

在决定哪种方案更适合您的情况之前,您需要考虑以下因素:

系统复杂性:如果您的系统非常复杂,可能会有许多菜单和许多不同类型的测试用例,这时想法 2 可能更好,因为它可以更容易地对测试用例进行分类和查找。
团队规模:如果您的测试团队很大,需要同时维护多个测试用例集,那么想法 1 可能更好,因为每个文件包含多个测试用例,可以方便地进行分配和协作。
维护需求:如果您的测试代码需要频繁修改和更新,那么想法 1 可能更好,因为每个文件包含多个测试用例,可以更容易地进行修改和更新。

花菜 回复

谢谢大佬哈😀

DTung 回复

每次看这篇文章,谢谢大佬

这是一个非常好的问题,实际上在 API 接口封装中,这个问题是一个非常重要的问题。想法 1 和想法 2 都有其优点和缺点,下面我会逐一进行分析和讲解。

想法 1: 不同 menu 下面三个文件 api.py, button.py, check.py

这种方式的优点在于:

文件结构清晰,方便查找和维护。
封装方式简单,易于实现。
缺点在于:

在每个 menu 下,都需要编写 3 个文件,这增加了编写和维护的工作量。
当 menu 数量增加时,文件结构会变得相对较深,查找和维护会变得更加复杂。
想法 2: api 下面不同 menu.py,button 下面不同 menu.py,check 下面不同 menu.py

这种方式的优点在于:

以 menu 为单元进行封装,每个 menu 的 API、button 和 check 都放在同一个文件中,方便维护。
缺点在于:

在每个 menu 中,需要编写三个类,分别用于封装 API、button 和 check,这增加了编写和维护的工作量。
当 menu 数量增加时,需要创建更多的类,这将增加代码量和维护成本。
基于以上分析,我个人更倾向于采用想法 1,因为想法 1 的结构清晰、易于查找和维护,并且还可以通过采用适当的文件夹结构来解决文件结构变得过于深的问题,例如:

Copy code
project
├── menu1
│ ├── api.py
│ ├── button.py
│ └── check.py
├── menu2
│ ├── api.py
│ ├── button.py
│ └── check.py
├── menu3
│ ├── api.py
│ ├── button.py
│ └── check.py
└── utils
├── common.py
├── http.py
└── ...
这种结构可以轻松地扩展到多个 menu,并且由于 utils 文件夹的存在,可以方便地共享公共代码,也可以将任何需要单独维护的代码放在独立的文件夹中。

最后,需要根据实际需求和项目情况来选择适合自己的封装方式,权衡利弊,并且采用适当的结构来组织代码。

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