Java+Selenium+Testng-web UI自动化测试框架-5文件结构设计和公用方法的封装

项目或大或小都会有很多模块很多页面,我们不可能将所有case一个一个堆积到一起,所以要设计一个合理的框架结构,合理的抽离公用方法、组织case,做到元素与操作分层,操作与步骤分层。

首先准备3个基本的package:util,pages,testcases。

1.util用来放公用的方法。例如发邮件、截图,util包中的BaseFunction用来放共用的基本操作方法,例如点击、向文本框输入文本等。util包中的BaseTestCase用来放每个测试用例的公共部分,本框架会在每个测试用例运行前打开浏览器,打开待测试系统网址,登录,在每个case后登出系统并关闭浏览器。

2.pages用来放所有页面对象类。每个页面为一个类,页面类文件中分为两部分,一部分为页面的元素,一部分为页面的操作方法,每一个类文件继承BaseFunction。BaseFunctionWeb中存放web端的公用操作方法。

3.testcases用来放测试用例,每一个测试用例是pages包中的页面类的方法的堆积。每一个类文件继承BaseTestCase。不要在测试用例中写大量的操作逻辑,页面操作逻辑放到对应的页面类中。


每个包下可以根据项目情况分为不同的子包,我是按照项目模块分为了不同的包,每个模块下又按照不同的页面分为不同的类。如下:

先介绍一下util包中的BaseFunction和BaseTestCase两个类。
BaseFunction用来放公用的方法,比如前几篇文章提到的读取配置文件和初始化chromedriver。所有的类都会继承BaseFunction。如下:

BaseTestCase主要用来放登录和登出方法,因为每个测试用例执行前都需要登录、执行后需要登出。还有project执行完邮件发送测试报告的方法。如下,其中使用到了TestNG,详细介绍在下一篇文章中。

接下来介绍一下新增一个case的步骤,
1. 在页面类中定位页面元素并实现页面操作方法。

在页面类文件上部定义类变量:需要定位的元素的locator。如果页面类中已经有这个元素,不需要再次罗列。
尽量使用BaseFunction中已经封装好的方法

等待尽量不要直接sleep(),而是等待直到指定条件,避免不必要的等待和不足的等待。

公用的方法抽离到对应的BaseFunction中。如下:


2. 在testcase包中对应的模块下的页面文件中写测试用例,测试用例一步一步基本上就是对应page中的一个一个方法,如下:

这样一个基本的代码结构就搭建完毕了,不过目前还不能执行,下一篇文章会引入TestNG, 这样整个框架就可以跑起来了。

猜你喜欢

转载自blog.csdn.net/weixin_42409365/article/details/80624783
今日推荐