Python关键字驱动
2019/08/28 16:10 分类: 技术交流 浏览:0
工作中在回归测试的时候有很多重复测试的用例,我们希望这部分用例能自动化执行,减少人的重复性劳动。使用传统的全写代码模式进行自动化测试,如果测试人员不懂代码,那么自动化测试就无法开展,对技能要求太高,能不能有这个样的一个工具或框架,部分测试人员不写代码也能进行自动化测试?
我们先来看看之前我们设计的用例。
我们要怎样把上面的用例做成自动化用例?让代码实现如下功能。
如果用以前的用例格式来直接转换成自动化用例能行吗?
我的设计方法 :
我们把上面的这种设计方法叫做关键字驱动,总结以下两点。
从上面设计的用例出发,我们依次来分析需要实现的功能。
我们希望的是自动化框架脚本能读取每一行用例,然后在执行后把测试结果也填好,如果执行出错要有错误信息、错误截图。那我们需要完成以下代码的编写。
主要实现excel表格的读取与写入
class OperateExcel ( builtins.object )
Methods defined here:
__init__ (self, excelfile)
:param excelfile: excle文件路径和名字
get_cell_of_object (self, sheet, coordinate=None, row_no=None, cols_no=None)
:param sheet: sheet对象 :param coordinate: 坐标 :param rowNo: 行号 :param colsNo: 列号 :return: 单元格的对象
get_cell_of_value (self, sheet, coordinate=None, row_no=None, cols_no=None)
:param sheet: sheet对象 :param coordinate:坐标 :param row_no:行号 :param cols_no:列号 :return:cell值
get_cols_number (self, sheet)
:param sheet: sheet对象 :return: sheet中有数据区域的列结束行号
get_column (self, sheet, col_no)
:param sheet: sheet对象 :param col_no: 下标从1开始 :return:
get_row (self, sheet, row_no)
:param sheet: sheet对象 :param rowNo: 从1开始 :return: 返回的是这一行所有的数据内容组成的tuple
get_rows_number (self, sheet)
:param sheet: sheet对象 :return: sheet中有数据区域的行结束行号
get_sheet_by_index (self, sheet_index)
:param sheet_index: sheet的索引号 :return: sheet对象
get_sheet_by_name (self, sheet_name)
:param sheet_name: excel中的sheet名字 :return: sheet对象
get_start_col_number (self, sheet)
:param sheet: sheet对象 :return: sheet中有数据区域的开始的列号
get_start_row_number (self, sheet)
:param sheet: sheet对象 :return: sheet中有数据区域的开始的行号
write_cell (self, sheet, content, coordinate=None, row_no=None, cols_no=None, style=None)
:param sheet: sheet对象 :param content: 写入的内容 :param coordinate: 坐标 :param row_no: 行号 :param cols_no: 列号 :param style: 字体颜色的名字,比如red,green :return:成功返回True
write_cell_current_time (self, sheet, coordinate=None, row_no=None, cols_no=None)
:param sheet: sheet对象 :param coordinate: 坐标 :param row_no: 行号,下标从1开始 :param cols_no: 列号,下标从1开始 :return:成功返回True
主要实现页面元素查找功能的封装和页面校验断言assert的封装
class WebPageAction ( builtins.object )
__init__ (self)
:param browser_name:浏览器的类型 chrome firefox ie
accept_alert (self)
assert_driver_title_is (self, title)
assert_is_text_in_element (self, locator, text, timeout=10)
判断文本是否存在于文本中 :return:
assert_is_value_in_element (self, locator, value, timeout=10)
判断value属性值是否相同 :return:
assert_string_in_pagesource (self, string)
:param string: 断言页面源码是否存在某关键字或关键字字符串 :return: 成功返回True,否则False
back_browser (self)
capture_screen (self)
屏幕截图 :return:
clear (self, locator)
click (self, locator, timeout=10)
点击元素 :return:
close_browser (self)
关闭浏览器 :return:
close_window (self)
关闭当前页面 :return:
find_element (self, locator, timeout=10)
find_elements (self, locator, timeout=10)
input_text (self, locator, text, timeout=10)
写入数据 :return:
maximize_browser (self)
窗口最大化 :return:
open_browser (self, browser_name=None)
open_url (self, url)
打开网址 :return:
random_choice_select (self, loc_1, loc_2='option')
refresh_browser (self)
刷新浏览器 :return:
select_by_index (self, locator, index, timeout=10)
索引定位下拉框选项 :param locator: 定位器,是一个元组 :param index: 接收索引 :param timeout: 最大等待时间 :return:
select_by_text (self, locator, text, timeout=10)
文本信息定位下拉框选项 :param locator: 定位器,是一个元组 :param text: 接收文本信息 :param timeout: 最大等待时间 :return:
select_by_value (self, locator, value, timeout=10)
value值定位下拉框选项 :param locator: 定位器,是一个元组 :param value: value值的接收 :param timeout: 最大等待时间 :return:
select_checkbox (self, locator, timeout=10)
选择单个复选框 :param locator: 定位器,是一个元组 :param timeout: 定位器,是一个元组 :return:
select_checkboxes (self, locator, timeout=10)
全选复选框 :param locator: 定位器,是一个元组 :param timeout: 最大等待时间 :return:
select_radio (self, locator, timeout=10)
单选框选中定位 :param locator: 定位器,是一个元组 :param timeout: 最大等待时间 :return:
sleep_seconds (self, seconds)
通过logging模块记录系统的运行日志
方便excel在调整列或者以后添加列后的维护。