前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化测试之pom模型

自动化测试之pom模型

作者头像
找Bug
发布2022-07-22 15:18:26
4710
发布2022-07-22 15:18:26
举报
文章被收录于专栏:你的Bug我做主

测试活动中,实现了自动化用例编码后,总会面临深度封装的问题,在代码编辑时就应考虑到低耦合的特性,且尽量简洁,以便后期个人维护,采用编程的思想也就是面向对象的思想。利用POM(page object model)模型实现实际生产中的自动化测试,是实现低耦合及可复用性的一个可行方式,这样就减少了代码的冗余,提高可维护性,后期更改也更清晰明了,基本的pom包含以下的几个方面。

1.base 目录(公共方法的提取封装)

这个目录里面一个文件写的是一些公共的方法,比如浏览器的获取,打开网页,定位元素,输入数据,点击操作,等待操作,跳转操作等等,其他的页面操作逻辑直接继承这个类就可以了。另一个写日志类等其他的公共文件

2.page/api 目录(对各UI页面或接口调用实现的封装)

ui页面的话主要是包括登录页和一个主页面,主页往里面添加方法就可以了,比如搜索,增删改查等各种操作

3.cases 目录(测试用例/脚本目录)

里面就是用unittest或pytest设计测试用例

4.datas 目录 (存放测试数据yaml文件)

这个实现了代码与数据的分离,需要用到ddt,yaml是一种类似于json的文件,可以定义多个不同的数据,是字典类型

5.report 目录(测试报告生成目录)

生成报告,可以用Beautifulreport进行设计

6.pytest.ini 文件(测试执行时的配置参数文件)

tips:各目录中的文件名命名规则要遵守实际使用框架的的命名规则。

一、base目录一般是存放测试代码中都需要用到的公共方法,比如在UI自动化中,对webdriver对象的实例化,在API自动化中对重复使用底层库requests的发送请求的动作都可进行提取,封装到一个base_page.py/base_api.py文件中,在其他文件中通过导包继承的方式实现类和方法的复用。

如:

此处将发送请求的动作封装到base_api.py文件中,将数据生成封装到create_data.py中,将各请求获取token的动作封装到get_token.py文件中,共性就是很多其他文件会复用他们,且不会发生方法的改写。

二、page/api 目录

1.在UI项目中,page目录内实现对各页面的封装,每个待测试的页面可以实现一个page,例如首页,可命名为house_page.py,达到见名知意的效果,也方便个人在其他文件中对该文件的导入复用以及后期维护,每个page文件中,实现对该页面中待操作的元素(表现层)以及各元素要实现的动作(操作层)的封装。

2.在接口项目中,api目录内实现对各接口实例的调用封装,方便在测试类中直接调用各api,无需在每个测试用例中重复造轮子。

如:

三、cases 目录用来存放实际的测试用例,每个文件以test开头命名,对page/api中的文件进行测试步骤的实现。例如:可根据自己习惯结合项目特点实现断言等功能。

四、datas 目录用来存放实现数据驱动时的各yaml文件,例如本人举例项目中,将各个接口的测试对应创建关联名的yaml文件,将数据写入yaml文件中,然后在测试用例中动读取态载入yaml文件中的数据,实现测试的数据驱动,当然,存放测试数据的方式有很多,录入csv文件,excel文件,json文件,yaml文件等,但是个人建议使用yaml文件,相对于其他几种格式文件,yaml支持更多格式形式的数据存放与读取,且能结构化存放与输出,方便后期个人修改与维护,并且在后期实现了定制框架后,其他代码能力不足的同事也方便上手使用该框架,不用去实现代码,也不用明白代码实现逻辑,只需维护对应的yaml文件即可。

如:

参考链接:

https://blog.csdn.net/qq_40132294/article/details/120140137

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 找Bug 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档