100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Selenium Web自动化测试——基于unittest框架的PO设计模式

Selenium Web自动化测试——基于unittest框架的PO设计模式

时间:2021-01-27 15:14:30

相关推荐

Selenium Web自动化测试——基于unittest框架的PO设计模式

引言

前面一直在讲接口自动化测试框架与案例分享,很少讲Selenium这个Web自动化测试神器。它主要用来做UI自动化测试,大家都知道UI自动化测试成本相当高,一般的Web自动化测试我是一直不建议做的。

虽然不推荐,但是这里有一个设计思想是不错的——PO设计模式。

PO设计模式

PO设计模式,英文名称:Page Object Model。PO设计模式是Selenium自动化测试中最佳的设计方式之一。相比传统设计中:页面定位元素→输入数据→操作元素→断言结果,会有以下问题:

1、易用性差:杂乱无章的定位元素方法,例如:find_element;

2、扩展性不好:用例孤立,无法扩展;

3、复用性差:无公共方法,很难服用;

4、可维护性差:一旦元素变化或测试步骤变化,需要维护大量代码和用例;

针对上面一些弊端,做了一些优化:

POM设计模式,将页面定位和业务操作分开,将元素定位和测试方法分离,从而提高代码的维护性。而传统的POM是元素定位和测试方法放在一起,如下图:

这样做的优势:

1、页面元素定位和业务操作方法分离,使得代码更加清晰,减少冗余代码;

2、测试方法单独抽离,这样提高用例的可读性;

3、针对ui变化频繁的项目和测试步骤的变化,提高了测试用例的维护性;

一条测试用例可能需要多个步骤操作元素,将每一个步骤单独封装成一个方法,在执行测试用例时调用封装好的方法进行操作。PO模式可以把一个页面分为三个层级,对象库层、操作层、业务层。

对象库层:封装定位元素的方法。

操作层:封装对元素的操作。

业务层:将一个或多个操作组合起来完成一个业务功能。

PO设计模式核心组件

画一个操作如下:

首先抽象封装一个BasePage类,这个基类拥有Webdriver实例的属性,将页面分成一个个Page,每一个Page继承基类BasePage,可以通过driver来管理每一个Page中的元素,

在Page中将定位元素的操作封装成一个一个方法。TestCase继承unittest里面的TestCase类,并且依赖Page类,进行测试步骤的执行工作。

这样以来,页面元素一旦变化,只需要维护每一个Page中的方法,测试流程发生变化,只需要维护TestCase即可。

核心组件:

BasePage.py模块:

Page页面模块:

TestCase用例模块:

PO模式简单实例

现在根据PO设计模式思想,简单实现一个需求:

打开浏览器,输入url:,在百度搜索文本框内输入关键字:selenium,然后单击:百度一下,进行搜索。

根据需求,设计步骤如下:

BasePage:

SearchPage:

TestCase:

三个核心组件完成,项目结构如下:

运行测试,生成报告如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。