一:框架简介
1.使用自动化框架意义
1.提高代码的易读性
2.提高编码效率
3.提高代码的易维护性
2.框架内容
基于技术以及时间有限,我们暂时只对我们自动化框架做出以下分层:数据层,模块层,报告层,用例层,以及testrunner。用例层和testrunner主要导入unittest框架,下文中会将这两层总结在一起进行简要概述。
二:数据层
数据层也称呼为数据驱动,该层主要作用是将测试数据存放到Excel表格中,通过代码读取excel中数据。这样做的目的是实现数据分离,使代码整洁度提高,效率提高,每一个测试数据表现出来是一个测试用例。
实现步骤:
1.新建data文件夹,在文件夹中新建Excel表格,将测试数据存放到表格中。如图:
2.cmd中下载xlrd,
如果在配置环境时已经下载就不用再下载了. 新建python文件如图中 excelRW. py。使用import xlrd, 导入xlrd既可以读取excel数据。
3、找到Excel表路径:找到根目录的 data文件夹 里的 all_accounts.xls
4、定义一个读取Excel表格的函数,里面设定有 esheet, rowx, colx 三个变量,分别表示表单,行,列
5、通过 book 读取 Excel 路径信息
6、通过 sh 读取 book 下表单索引信息
7、通过 a 读取 sh 表单下的行和列的信息。完成这些之后,可以在相关位置通过实例进行引用
三:模块层
模块层主要是对app模块进行一系列的定位操作,再将这些操作封装在一个函数中,方便后期在unittest框架中直接调用这个函数。具体定位操作在此不做详解,参考另外一篇元素定位文档。以下为恩爱号登录小模块举例:
四:unittest框架
用例层以及用例执行主要使用的unittest框架。详细了解unittest框架可以访问官网https://docs.python.org/2/library/unittest.html。
unittest框架包括4个部分:Test fixture,Testcase,Testsuite,Testrunner。
Test fixture表示是测试准备前要做的工作和测试执行完后要做的工作,包括setUp()和tearDown()来实现。我们在setUp()主要是存放是启动app代码,tearDown()在每个测试方法后执行,完成清理工作,一般都存放driver.quit()代码。
Testcase:一个Testcase的实例就是一个测试用例,如test_case1, test_case2。我们将之前模块层封装的函数调用到这里面作为一个用例,同时通过assert断言方法用于检测判断比较。
以下为Testfixture和Testcase实例:
TestSuite: 对一个功能的测试往往需要多测试用例的,可以把多的测试用例集合在一起执行,这就是TestSuite的概念。常用addTest()方法将一个测试用例添加到测试套件中。
TextTestRunner: 是用来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存在TextTestResult实例中。
五:报告层
报告层存放的是测试用例执行的结果。下载HTMLtestrunner后,就会自动生成html文件(这个步骤在配置自动化环境文档中有所介绍)。unittest框架中使用testrunner执行测试用例完成后,找到reporter文件夹通过浏览器打开xea_reporter文件,就能看到每条用例执行结果。