摘要

如何规划自动化框架、如何设计。自动化测试框架需要包含那几部分。一起给自动化测试框架定个名字吧…… ,给自动化框架定个名字吧...~ AutoRunFrameWork

正文

为了让学习者,将主要精力放在自动化框架本身,避免疲于为搭建环境而耗费时间。我们选取baidu的搜索的业务流程来做为基本的测试用例。这样学习过程中不需要在为测试项目环境而发愁。(测试场景脚本仅仅是一条用例,掌握了selenium的基本知识技能,完全可以应付大部分情况,本系列主题主要是框架,因此侧重点再自动化测试框架了哦)

框架的设计思路

采取类似类图(类图设计的并不严谨)的方式,把框架的设计内容梳理下...。

1.TestCase:代之测试用例(或用例集),其应该还有setUp、test_、tearDown。其中test*是用例主体,setUp与tearDown,可以理解为测试用例的初始化与还原。
(如:假如要测试下订单的流程,首先需要商品列表中存在某商品,下订单后,需要确定订单库里有。用例结束后,再把该订单删除,还原为初始状态。这其中确保商品列表中有某商品,就是setUp;在订单列表中删除订单,相当于tearDown)

2.seleniumLibrary:selenium库,操作测试页面即及页面元素肯定需要借助WebDriver,因此需要selenium的支持

3.UnitTest:单元测试框架,主要是使用其中的断言进行用例执行结果的验证。setUp、tearDown都是继承至UnitTest才可以使用的

4.OS:自动化框架需要跟本身操作系统(电脑)进行一些交互,比如读取文件路径、写入文件等。因此需要用到OS模块

5.PageBase:也可以命名为Basepage,一个命名罢了...~,所有测试页面的父类,采取PageObject设计的思想,其用于承载一些测试页面的公共方法、或者WebDriverApi方法的二次封装。采取PO(PageObject的缩写)模式后,单个测试页面的可维护性大大提高,也符合自动化测试框架的设计思想。

6.Log:日志模块了,日志跟开发日志的作用是完全一致的哦...。写得好的自动化测试脚本,日志有序完备,能够用于跟踪关键路径,方便定位问题,有时还可以帮助进行性能优化。

7.TestCaseInfo:用例信息,用例执行的一些属性(id、name、result等),每条用例执行时希望带有的一些信息。

8.ConfigIni:配置文件的操作,这里我们选取的配置文件格式是INI。你也可以选择xml作为配置文件,内容设置成为对xml的操作即可,原理上是相同的

9.DoExcel:自动化测试过程中,测试脚本中不要存放测试数据。要做到测试数据与测试脚本的分离。可以理解为数据驱动哦...。不同的数据可以实现不同的测试场景(正确的用户名与密码、错误的用户名与密码,是两条不同的测试用例哦...),而此时测试脚本流程不变,只需要读取不同的数据即可实现。

10.send_mail:目前是互联网思维,测试报告不要在要跑到固定的目录下去查看了,可以直接将测试报告作为邮件正文或附件发送给团队成员,方便及时指导自动化测试的结果。

测试框架结构

上面把框架的设计思路梳理了下,接下来把框架的详细目录层级结构展现下(后续实现测试框架将按照该目录层级及命名开展):

  • Config 配置文件的目录
    • config.ini 配置文件
    • globalconfig.py 获得日志路径、测试用例路径、测试报告路径、测试数据路径
  • Data 测试数据
    • TestData.xlsx 测试数据
  • Log 日志
    • Log.py 日志类。设置日志类,其他模块或文件需要日志类时,调用该文件
  • Public 公共文件(函数)库
    • Common 封装的公共的方法
    • Commonconfig.py 公共的参数配置:调试过程中的测试数据等
    • DoExcel.py 操作excel(数据驱动)
    • Send_mail.py 发送邮件(html)
    • ReadConfigIni.py 读取ini格式的配置文件
    • TestCaseInfo.py 测试用例信息
  • Pages 使用po模式设计的测试页面
    • BasePage.py 基类,对一些测试页面公共方法、属性的封装及webdrive一些方法的二次封装
    • bing.py 测试页面
  • Report 测试报告
    • Log 日志目录
      ***Log日志
    • TestReport 测试报告目录
      ***html测试报告
  • TestCase 测试用例
    • TC_BingSearch.py
  • Run.py 控制测试用例的运行