UI自动化框架:
UI自动化框架可以分为8个模块,conf、data、public、pageobject、testcase、runner、report、log。
conf是用来储存系统环境、数据库、邮件的配置参数、项目的绝对路径、各个模块的绝对路径,其中文件有ini、yaml、xlsx文件等,通过响应的方法来处理相应的文件。ini文件一般通过继承configparse模块进行处理,yaml一般使用@unittest.skip@file_data@unpack装饰器进行读取,xlsx主要通过引用openxlrd、xlrd、xlwt、xlutils处理。
data是用来储存用来进行测试用例的测试数据,通过xlsx处理,然后通过公共的读xlsx方法进行处理。
public可以分为两部分,一部分可以用来储存自己设计的模块,如调用数据库模块,用到pymysql模块、日志输出模块用到logging模块、邮件发送模块用到smtp模块和email模块、处理ini文件模块用到configparse模块、读取xlsx测试用例数据模块用到openxlrd模块、xlrd模块、xlwt模块、xlutil模块,另一部分是用来封装对UI页面的处理基类,用到的selenium模块,其中包括选择驱动、打开网页、定位元素、鼠标移动、鼠标点击、动态等待、输入内容等。Base类中通过设置一个set-driver的类方法建立一个driver对象,然后测试用例来调取这个Base类中的set-driver方法中的driver对象,就可以通过单例模式来实现测试用例。有时候我们还在这个模块中针对每个流程进行封装。
pageElement是封装了当前界面的所有元素,这样我们就实现了元素定位、流程、案例的分离,降低代码之间的耦合度,降低维护成本。
testcase是用来封装测试用例,在此模块中我们可以通过调用基类的set-driver类方法实现单例模式。通过unitest框架继承unitest.TestCas设计测试用例。用到ddt数据驱动来输入测试数据。
runner是用来封装要运行的测试用例,还是通过使用unitest模块中的unitest.TestSuite来装测试用例,unitest.TestRunner,HTMLTestRunner来执行测试用例。
report是用来存储运行测试用例后的结果,用到HTMLTestRunner。
log是用来储存运行测试用例的日志,用到logging模块,设置输出的控制台的日志等级,设置输出到文件的日志等级等。