溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

源碼時代Python干貨分享 |史上最全python關鍵字驅動自動化測試信解決方案

發(fā)布時間:2020-08-03 04:34:40 來源:網絡 閱讀:472 作者:wx5d51393e4bd0e 欄目:編程語言

?操作瀏覽器的方法都固定下來,不能變。
?操作方法需要的字段(定位方法,定位表達式,操作的值)用單獨的列表示。
?程序運行異常后需要有錯誤信息和錯誤截圖
2.3.概念
我們把上面的這種設計方法叫做關鍵字驅動,總結以下兩點。
1.關鍵字驅動框架是一種功能自動化測試框架
?被稱為表格驅動測試
?被稱為基于動作字的測試。
2.關鍵字驅動的框架的重要組成部分
?測試步驟(Test Step),
?測試步驟中的對象(Test Object) --鼠標、鍵盤、瀏覽器等對象
?測試對象執(zhí)行的動作(Action)
?測試對象需要的數據(Test Data)
3.?如何設計關鍵字驅動
3.1.如何設計程序?
從上面設計的用例出發(fā),我們依次來分析需要實現的功能。

我們希望的是自動化框架腳本能讀取每一行用例,然后在執(zhí)行后把測試結果也填好,如果執(zhí)行出錯要有錯誤信息、錯誤截圖。那我們需要完成以下代碼的編寫。
(1)Excel操作(讀、寫)
?讀取關鍵字名稱、操作元素定位方式、操作元素定位表達式、操作值
?執(zhí)行完成后寫入執(zhí)行時間、測試結果、錯誤信息、截圖文件位置
(2)根據關鍵字名稱、操作元素定位方式、操作元素定位表達式、操作值開發(fā)web操作腳本
(3)執(zhí)行用例的方法腳本
(4)錯誤信息記錄方法腳本
(5)錯誤截圖方法腳本
3.2.Excel的操作
主要實現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中有數據區(qū)域的列結束行號
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中有數據區(qū)域的行結束行號
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中有數據區(qū)域的開始的列號
get_start_row_number(self, sheet)
:param?sheet:?sheet對象
:return:?sheet中有數據區(qū)域的開始的行號
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
3.3.Web操作腳本
主要實現頁面元素查找功能的封裝和頁面校驗斷言assert的封裝

class WebPageAction(builtins.object)
??? ? Methods defined here:
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)
強制等待

3.4.日志記錄
通過logging模塊記錄系統(tǒng)的運行日志
3.5.配置
方便excel在調整列或者以后添加列后的維護。

3.6.運行
(1)自定義一個在excle寫結果的函數
(2)執(zhí)行用例的步驟
a)先獲取要執(zhí)行的用例,遍歷找到要具體執(zhí)行用例的sheet表。
b)執(zhí)行sheet表中的步驟。
i.根據sheet中的步驟判斷當前用例執(zhí)行是否成功(需要執(zhí)行的用例數等于執(zhí)行通過的用例數,則執(zhí)行成功)
ii.如果有錯誤就截圖,并保存錯誤日志
iii.測試過程中統(tǒng)計執(zhí)行了多少用例,成功多少,失敗多少。
c)把執(zhí)行結果寫到excle中
4.項目代碼
4.1.代碼

4.2.運行結果

5.框架分析
(1)使用外部測試數據文件,使用Excel管理測試用例的集合和每個測試用例的所有測試步驟,實現一個文件中完成測試用例的維護
(2)每個測試用例的測試結果在一個文件中查看和統(tǒng)計
(3)通過定義關鍵字,操作元素的定位方式及定位表達式和操作值就可以實現每個測試用例步驟的執(zhí)行,可以更加靈活地實現自動化測試的需求
(4)實現定位表達式和測試代碼的分離,實現定位表達式直接在測試數據文件中進行維護。
(5)框架提供日志功能,方便調試和監(jiān)控自動化測試程序的執(zhí)行
(6)基于關鍵字測試框架,即使不懂開發(fā)技術的測試人員也可以實施自動化測試,便于在整個測試團隊中推廣和使用自動化測試技術,降低自動化測試實施的技術門檻
(7)基于關鍵字的方式,可以進行任意關鍵字的擴展,以滿足更加復雜項目的自動化測試需求
(本文由源碼時代技術老師撰寫,轉載請注明出處)

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI