5 加载 excel 用例
1 用例结构
- flow:表示各个功能点用例组成的流程

- 其他 sheet 页:表示各个功能点用例
![]()
- 其他 sheet 页每一行:表示此功能点用例步骤

2 加载用例核心
- 三重 for 循环进行加载
- 第一层 for 循环 flow sheet 中所有需要执行的流程
- 第二层 for 循环所有用例的 sheet 页
- 第三层 for 循环所有用例 sheet 页的 step
- 最后将结果写回 flow sheet 页的执行结果列
from testcases.docase import do_case from utils.excelparse import ExcelParser from utils.logger import logger def load_case(browser, book_name, sheet_name): # 报告数据收集 all_num = 0 pass_num = 0 fail_num = 0 table_list = [] book = ExcelParser(book_name) book.get_sheet(sheet_name) # 最大行和列 rows = book.get_max_row() # 第一行为列名 # 从第二行开始循环检测需要执行的 flow # flows for i in range(2, rows + 1): do_or_not = book.get_cell_value(i, 4) flow_result = 'NT' # 判断是否执行 if "Y" == do_or_not: # 报告数据收集 all_num += 1 # flow 名 flow_name = book.get_cell_value(i, 2) # 包含用例 case_list = book.get_cell_value(i, 3).split(",") # case/sheet 逐个执行 for case in case_list: print("用例名:" + case) # 操作 case 对应的 sheet book.get_sheet(case) case_rows = book.get_max_row() # case step 逐行执行 for j in range(2, case_rows + 1): # 控件名 ele_name = book.get_cell_value(j, 2) # 控件类型 element = book.get_cell_value(j, 3) # xpath xpath = book.get_cell_value(j, 4) # 操作类型 option = book.get_cell_value(j, 5) # 操作值 value = book.get_cell_value(j, 6) # 控件执行结果为 FAIL,结束 case 的执行 flow_result = do_case(browser, case, ele_name, element, xpath, value) print('步骤名:' + ele_name + " " + flow_result) logger.append().error(case + " " + ele_name + " " + flow_result) if "FAIL" == flow_result: # 出错后,不执行此用例 logger.append().error(case + " " + ele_name + " " + flow_result) break elif "NT" == flow_result: print('步骤名:' + ele_name + " " + ele_name + "没有进行任何操作!") logger.append().error(case + " " + ele_name + "没有进行任何操作!") if "FAIL" == flow_result: # 出错后,不执行此 flow break # 写入测试结果 book.get_sheet(sheet_name) print("=============================") book.set_cell_value(i, 5, flow_result) # 报告数据收集 if "FAIL" == flow_result: fail_num += 1 else: pass_num += 1 tmp_id = book.get_cell_value(i, 1) tmp_flow_name = book.get_cell_value(i, 2) tmp_cases = book.get_cell_value(i, 3) tmp_flow_result = book.get_cell_value(i, 5) table_list.append((tmp_id, tmp_flow_name, tmp_cases, tmp_flow_result)) # print(book.get_cell_value(1, 2)) # 不需要执行则略过 else: book.set_cell_value(i, 5, "NT") continue # 保存测试结果 book.save_file() # 退出驱动,关闭窗口 browser.quite() # 返回 book,此时 sheet 指定的是 flows return all_num, pass_num, fail_num, table_list
浙公网安备 33010602011771号