自动化测试框架流程图:
自动化测试框架模块:
- 配置文件读取模块
- 日志模块
- 测试数据读取模块
- 测试执行模块
- 测试结果更新模块
- 异常处理模块
- 屏幕截图模块
自动化框架模块功能说明:
- 配置文件读取模块
模块的主要功能是把测试项目的公共配置读取到脚本里。
- 日志模块
模块的主要功能是记录测试的详细步骤。
- 测试数据读取模块
模块主要包括的功能是测试用例数据的读取、测试步骤数据的读取、测试输入数据的读取、测试期望结果的数据。
- 测试执行模块
模块的主要功能是执行测试用例的主要步骤,包括页面控件元素的识别以及操作、 测试数据的输入、验证测试的结果。
- 测试结果更新模块
模块的主要功能是更新测试的结果。
- 异常处理模块
模块的主要功能是处理脚本的相应异常信息,框架的关键异常在测试数据读取以及测试执行阶段产生。
- 屏幕截图模块
模块的主要功能是当用例执行失败或者异常的时候截取必要的屏幕截图。
自动化模块接口使用例子:
- 配置文件读取模块接口
## 脚本里引入配置模块
from fs_webui_test.fs_webui_test_fun import *
## 脚本里实例化配置对象
qa = InitTest()
cf = qa.initConfigFile(config_file)
config_file: 配置文件的名称
## 脚本里面使用配置模块
ambari_user = cf['ambari_user']
- 日志模块
## 脚本里面引入log模块
from basics.logger import *
## 脚本里面实例化log对象
plog = AutoLogger(log_file, log_level)
log_file: log的名称
log_level可以是: DEBUG, INFO, WARNING, ERROR, CRITICAL
## 脚本使用log函数
plog.log("INFO", "Your info log.")
plog.log("DEBUG ", "Your debug log.")
- 屏幕截图模块
## 脚本里引入屏幕截图模块
from fs_webui_test.fs_webui_test_fun import *
## 脚本里实例化屏幕截图对象
qa = InitTest()
## 脚本里面使用屏幕截图模块
qa.takeScreenshot(browser, screenshot_name + ".png")
screenshot_name: 截图的名称
需要研发的模块接口定义:
- 测试数据读取模块
模块需要以类的形式定义在函数库fs_webui_test_fun.py里面,类里面需要有异常处理的代码,这里的异常包括代码被动的异常以及脚本主动抛出的异常。
具体的使用方式如下:
## 脚本里引入函数库
from fs_webui_test.fs_webui_test_fun import *
## 脚本里实例化数据驱动对象
dd = DataDriver(“file_dir”, “tc_file.xlsx”)
file_dir: 项目测试用例文件tc_file.xlsx的存放路径。
## 脚本里面使用数据驱动读取用例列表
tc_list = dd.getTCLists()
## 脚本里面使用数据驱动读取测试数据列表
tc_steps = dd.getTCSteps()
- 测试结果更新模块
测试结果更新模块与数据驱动模块可以定义到同一个类里面,异常处理是一样的。
具体的使用方式如下:
from fs_webui_test.fs_webui_test_fun import *
## 脚本里实例化数据驱动对象
dd = DataDriver(“file_dir”, “tc_file.xlsx”)
file_dir: 项目测试用例文件tc_file.xlsx的存放路径。
## 脚本调用报表模块
dd.createReport(tc_result)
说明: 调用的结果应该创建报表文件tc_file_result.xlsx , 传入参数tc_result的格式要求:列表变量, 内容类似 [[001, tc1, pass], [003,tc3, fail] ……]
异常处理
脚本的异常应该分成两种类型,代码异常以及用户定义的异常。 函数库里面的异常应该可以让上层代码捕获,并能够有清晰的错误描述。如果代码返回的异常描述不清晰,需要在代码里面做相应的处理,重新主动抛出。
框架主流程的代码需要捕获所有模块的异常,并能做出相应的处理。 测试过程的验证以及测试结果的判断也是以异常的形式处理。
测试执行模块
测试执行属于框架的主流程,包括了测试数据的处理,页面元素的识别,测试步骤的执行,测试结果的验证,测试结果更新以及异常的处理。具体的逻辑请参考前面的流程图。