上次写的这个框架(如下),编写用例对编辑者的python能力有一定要求;用例如果是用Excel表格来维护,可以降低用例编写的门槛,可以增加这个自动化测试框架的维护效率。
目录
资源地址
不想看详细的编写过程,着急使用的小伙伴,可点下方链接,内附了完整框架资源和使用文档
https://download.csdn.net/download/python_problem/72603388
思路整理
- 在Excel表格中写入用例,每个sheet页写一条完整的测试用例,每行写一条操作步骤;
- 将表格中的内容读取出来;
- 根据每条操作的描述转化成python语言的文件,方便测试用例文件进行调用;
- 把读取的内容根据每个sheet页转化为对应的测试用例文件;
- 把这些用例添加到执行文件里的测试套件中;
- 最后执行“执行文件”。
改造过程
1.设计用例模版
- 序号/模块名称的填写需要与操作内容相符合
- 操作名称列:同一操作,必须是约定好的唯一的名称,便于以后转换为selenium操作
- 是否执行:填写yes/no,决定是否执行该操作,便于以后维护
- 元素定位方法:ID/ name/ class/ tagName/ linkText/ css/ xpath
- 元素定位路径:根据元素定位方法写入对应的路径
- 文本值:在输入值、判断等需要文本值的操作,填入对应文本
- 等待时间:需要等待时可填入等待时间(若为隐式等待也可不写等待操作)
2.表格中内容的读取
import openpyxl
def dataRead(lujing="../data/测试用例模板.xlsx"):
# 读取Excel
excel = openpyxl.load_workbook(lujing)
# 第一层字典 ------ 创建data空字典
data = {}
# 获取所有sheet页名称并进行遍历
for sheet_name in excel.sheetnames:
# 若sheet页名称包含test_case,就将这个sheet页赋给变量"sheet"
if "test_case" in sheet_name:
sheet = excel[sheet_name]
# 第二层字典 ------ 在data字典中,创建以sheet页名称为键的空字典
data[sheet_name] = {}
# 获取所有行的数据,并进行遍历
for row_data in sheet.rows:
# 第三层字典 ------ 创建以操作序号为键的空字典
data[sheet_name][row_data[0].value] = {}
# 第四层字典 ------ 内容放入键值对
data[sheet_name][row_data[0].value]['operation'] = row_data[2].value # 操作名称
data[sheet_name][row_data[0].value]['perform'] = row_data[3].value # 是否执行
data[sheet_name][row_data[0].value]['method'] = row_data[4].value # 元素定位方法
data[sheet_name][row_data[0].