测试代码的构成:
1.框架(为脚本服务,对应job。包括:一批脚本如何执行,成功和失败对应什么,看环境、版本、包、信息是否符合输入标准)
2.基类(对应某一功能的通用类)
3.脚本(对基类进行传参)
之前不理解为什么要用class,def相当于负责一个功能的部门成员,多个def组成了一个部门class,通过将成员合并起来,方便调用管理。编写大型代码时比较必须,小型代码没有什么必要。
任务执行流程:
初始化阶段--》环境检查阶段--》准备阶段--》执行任务阶段--》后处理阶段--》状态检查与结束
- 初始化阶段
首先调用_init_进行初始化,设置一些基本参数。
如果需要设置特定参数,调用set_parameters()
如果满足条件,调用TopoManger.init()初始化一些数据
- 环境检查阶段
执行物理环境检查,调用_check_physical_environment()
如果物理环境检查通过,继续进行局部环境检查,调用_run_check_own_environment()方法
- 准备阶段
根据环境检查结果,若标志为真,则执行_run_prepare()进行准备工作
- 执行任务阶段
如果准备阶段执行成功,则执行_run_do()方法执行具体的测试任务。
若任务执行成功,收集性能统计信息,执行_collect_perf_info()
- 后处理阶段
设置准备和执行阶段的结果信息,调用_get_result_info(test_flag=True)
执行后处理操作,包括删除可能创建的环境,调用_run_post()方法
设置后处理阶段的结果信息,调用_set_result_info(post_flag=True)
- 状态检查与结束
恢复初始值,将全局变量case_run_phase设置为None
检查物理环境和局部环境是否都具备,若任一环境不具备,输出信息并退出
在准备、执行或后处理阶段出现Bug时,输出信息并报错退出
在准备、执行或后处理阶段出现代码执行异常时,输出信息并报错
若执行成功,输出正常日志信息,并正常退出。
输入:
准备物理环境需要用到的一些参数,目前只对控制器id、控制器接口、硬盘数量、硬盘接口、硬盘介质、硬盘状态、硬盘扇区大小、硬盘厂商、 硬盘大小。
控制器ID:用于标识不同的控制器,例如在设置物理逻辑槽位映射、UBM逻辑槽位映射等犯法中需要传入的参数。
检查设备属性时需要设备信息或属性信息作为输入,以便检测设备属性是否变成文件属性并触发相应的处理逻辑。
可能需要一些条件参数,用于调整当前环境,如是否为前端集测平台、是否为后端集测等
在执行准备工作、主要操作和收尾工作时,需要一些参数作为输入
在执行清理环境、收集性能信息等方法时,需要相关参数来指导清理操作和性能信息的收集。