摘要:介紹是一款自動化測試框架,或者說是解決方案,名字取含義。打開操作,一般要在測試數(shù)據(jù)中指定新窗口名稱,如新窗口百度搜索窗口。測試數(shù)據(jù)列為要輸入的內(nèi)容。
介紹
sweetest 是一款 Web 自動化測試框架,或者說是解決方案,名字取 Selenium, Web UI, Excel, Element, Test 含義。
特點:
簡單快速,輕松上手
無需編碼能力
在 Excel 中以文本編寫測試用例
維護成本低
支持千、萬級別的用例規(guī)模
擁抱變化,支持敏捷
背景目前,Web 自動化測試基本上是以 Selenium 為接口來編寫測試代碼,但效果往往不是很好,普遍遇到如下問題:
用例設(shè)計人員的編碼能力很弱,測試代碼編寫和維護成本高,效果差;
測試代碼量大,測試意圖不直觀,無法支撐千、萬級別的用例規(guī)模;
Web 頁面元素的定位非常繁瑣,且頁面結(jié)構(gòu)經(jīng)常變動,導致用例失效。
我們知道,傳統(tǒng)的測試用例一般是在 Excel 中用文本編寫的,如果自動化測試用例也這么寫,是不是就可以解決問題1和2?
對于問題3,我想是時候?qū)﹂_發(fā)提出一些要求了,同時我們的元素定位也要優(yōu)化,讓頁面自由的去變化,而我們的定位只做最小適用。
Selenium 為底層接口;
在 Excel 中用文本編寫測試用例;
元素定位表格化,且優(yōu)先使用“板塊通用定位法”;
要求開發(fā)提供必要的、統(tǒng)一的元素屬性;
框架負責解析測試用例,執(zhí)行用例,記錄日志,輸出測試結(jié)果。
方案開發(fā)語言:Python
底層接口:Selenium
用例工具:Excel
測試用例如下圖:
系統(tǒng)要求:Windows
Python 版本:3.6+
Selenium
瀏覽器:Chrome
Chrome 驅(qū)動: chromedriver
安裝 sweetestpip install sweetest
快速體驗打開 cmd 命令窗口,切換到某個目錄,如:D:Autotest
sweetest cd sweetest_sample python start.py
OK,如果一切順利的話,sweetest 已經(jīng)跑起來了
目錄結(jié)構(gòu)目錄 | 說明 |
---|---|
element | 頁面元素表目錄 |
Baidu-Elements.xlsx | 頁面元素表,名稱格式:project_name + "-Elements.xlsx" |
junit | junit格式測試結(jié)果目錄 |
log | 自動化測試運行日志目錄 |
report | Excel 格式測試結(jié)果目錄 |
snapshot | 錯誤截圖目錄 |
testcase | 測試用例目錄 |
Baidu-TestCase.xlsx | 測試用例,名稱格式:project_name + "-TestCase.xlsx" |
start.py | 啟動腳本,test = Autotest(project_name, sheet_name) |
備注:以上3處的 project_name 必須一致
頁面元素表頁面元素表的作用主要是把元素定位獨立出來,一是方便維護定位信息,二是測試用例中用元素名稱書寫,可讀性更高。
目錄 | 注釋 |
---|---|
page | element 所在的頁面,在所有頁面都可用的 element 放在“通用”下面,如 title |
frame | element 所在的 frame id,如果是頂層 frame,可為空。 |
name | element 名稱,在不同的 page 下面可以同名 |
by | Selenium 定義方式 |
value | Selenium 定義的值 |
備注 | 注釋作用 |
id, link_text, partial_link_text, xpath, class_name
如:
page | name | by | value |
---|---|---|---|
百度搜索頁面 | 搜索框 | id | kw |
則自動化運行時會以 find_element_by_id("kw") 來定位
帶變量的定位方式
如示例中:
page | name | by | value |
---|---|---|---|
百度搜索頁面 | 搜索結(jié)果# | xpath | //*[@id="#"]/h3/a |
寫用例時,需要在 搜索結(jié)果# 后面帶上變量,如: 搜索結(jié)果#1
操作 | 頁面 | 元素 |
---|---|---|
點擊 | 百度搜索頁面 | 搜索結(jié)果#1 |
則自動化運行時會以 find_element_by_xpath("http://*[@id="1"]/h3/a") 來定位
已定義好的常用變量定位方式:
id#
link#
*link#
xpath#
class#
name#
url#
如:url#www.baidu.com
當然,如果#后面的變量不夠直觀的話,不建議太多使用這幾個變量方式。
頁面標題
頁面的 title
頁面URL
頁面的 url
一般來講,導航欄在所有頁面都存在,應該把導航欄放在“通用”下面,做成變量定位方式,如示例中的:
page | name | by | value |
---|---|---|---|
通用 | 搜索頁導航欄# | xpath | //*[@class="s_tab"]//a[text()="#"] |
用例中的寫法:
操作 | 頁面 | 元素 |
---|---|---|
點擊 | 通用 | 搜索頁導航欄#新聞 |
操作、頁面、元素這些列其實都是選項列表,利用 Excel 的下拉菜單功能,能夠讓書寫用例更方便,且不易筆誤。
下圖是測試用例文件中的 ElementsMap 頁面:
我們可以通過 Excel 的菜單欄“公式-名稱管理器”來配置這些菜單,同時在用例頁面通過“數(shù)據(jù)-數(shù)據(jù)有效性”配置好“操作”的下拉菜單,以及“頁面-元素”的二級聯(lián)動下拉菜單。
用例字段必填字段:
用例編號
步驟編號
操作
頁面
元素
前置條件:BASE: 整個測試套件的基礎(chǔ),必須通過才會執(zhí)行下一步,如:登錄;如果有的話應該為第一個測試用例。
SETUP:每個測試用例執(zhí)行前需要執(zhí)行的用例,只有 SETUP 執(zhí)行成功才會執(zhí)行該用例,如:返回首頁。
MAIN:一組用例的第一用例,和 SUB 一起使用,一個 MAIN 后面可以帶多個連續(xù)的 SUB 用例。此用例需要先執(zhí)行 SETUP 用例。
SUB:和 MAIN 一起使用,當前一個用例(MAIN or SUB)執(zhí)行結(jié)果為通過時才會執(zhí)行,否則測試結(jié)果置為 Blocked;且執(zhí)行此用例前不會執(zhí)行 SETUP 用例。
SNIPPET:用例片段,運行到此用例時不會立即執(zhí)行,需要在其他用例中使用“執(zhí)行”關(guān)鍵字調(diào)用此“用例片段”,才會執(zhí)行;配合“執(zhí)行”關(guān)鍵字的變量賦值功能,可以實現(xiàn)用例復用。
注意事項:
一般必須有 SETUP 用例。當執(zhí)行 SETUP 失敗,會嘗試執(zhí)行一次 BASE->SETUP 作為 SETUP 的執(zhí)行結(jié)果。
BASE 用例可以有 0 到多個,但作為 SETUP 中 BASE->SETUP 的 BASE 只有最后一個 BASE 用例。
SETUP 用例只能有 1 條,如果寫了多條,只有最后一條起作用。
操作(關(guān)鍵字)及對應的測試數(shù)據(jù)打開
即 get 方法,打開一個鏈接。
打開操作,一般要在測試數(shù)據(jù)中指定新窗口名稱,如:新窗口=百度搜索窗口。
檢查
取頁面元素的值、屬性和預期結(jié)果對比。
測試數(shù)據(jù)中如果沒有寫“k=v”的方式,則默認是取元素的 text。
檢查 text:
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
檢查 | 百度搜索頁面 | 搜索按鈕 | 百度一下 |
等價于
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
檢查 | 百度搜索頁面 | 搜索按鈕 | text=百度一下 |
檢查屬性:
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
檢查 | 百度搜索頁面 | 搜索框 | name=wd |
“頁面標題”和“頁面URL”直接在測試數(shù)據(jù)中寫預期結(jié)果即可。
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
檢查 | 百度搜索頁面 | 頁面標題 | 百度一下,你就知道 |
注意:測試數(shù)據(jù)中,由于逗號(,or ,)是多個“k=v”的分隔符,所以如果 v 中有逗號,要用反斜杠()轉(zhuǎn)義;但等號(=)無需轉(zhuǎn)義。
輸入
在輸入框中輸入文本。
測試數(shù)據(jù)列為要輸入的內(nèi)容。
點擊
點擊按鈕或者鏈接等(一切可點擊操作的)元素。此關(guān)鍵字支持在同一個頁面上順序點擊多個元素,在元素列以豎杠(|)分割即可,如:
操作 | 頁面 | 元素 |
---|---|---|
點擊 | 百度搜索頁面 | 搜索按鈕|搜索結(jié)果#1 |
移動到
有些頁面元素,當鼠標移動到上面時,會彈出下拉菜單等。此操作同關(guān)鍵字“點擊”類似。
執(zhí)行
即執(zhí)行測試用例片段,支持在測試數(shù)據(jù)中給變量賦值,如我們有用例片段 SNIPPET_001,則測試用例 BAIDU_002 中,步驟1如下:
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
執(zhí)行 | 用例片段 | SNIPPET_001 | keywords=搜狗 |
把變量 keyswords 賦值為“搜狗”,此步驟會執(zhí)行用例片段 SNIPPET_001,其搜索的關(guān)鍵字為“搜狗”。
檢查
把檢查結(jié)果反向,此關(guān)鍵字暫時未完整實現(xiàn)。
測試數(shù)據(jù):測試數(shù)據(jù)支持模糊匹配,如下:
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
檢查 | 通用 | 頁面標題 | *知乎 |
則,頁面標題中含有“知乎”即為通過。注意星號(*)要寫在開頭。
輸出數(shù)據(jù):在運行時,把元素的值或?qū)傩再x值給變量,此變量可以在之后的步驟中使用"<>"引用變量名。
操作 | 頁面 | 元素 | 測試數(shù)據(jù) | 輸出數(shù)據(jù) |
---|---|---|---|---|
點擊 | 百度搜索頁面 | 搜索結(jié)果#1 | title=text | |
檢查 | 通用 | 頁面標題 |
除了控制語句符號外,步驟編號必須為數(shù)字,建議在 Excel 中設(shè)置為文本格式。
控制語句:
if then else
步驟編號 | 操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|---|
^3 | 檢查 | 通用 | 頁面標題 | *知乎 |
>4 | 點擊 | 通用 | link#登錄 | |
<5 | 點擊 | 通用 | link#注冊機構(gòu)號 |
^ 表示 if 語句
> 表示 then 語句
< 表示 else 語句
if(^) 語句為真時,執(zhí)行 then(>) 語句,為否時執(zhí)行 else(<) 語句。無論后面有沒有 then 或者 else 語句,不影響后續(xù)步驟執(zhí)行。
then 語句 或者 else 語句,當不被執(zhí)行時,測試結(jié)果為 "-",不影響測試用例結(jié)果和后續(xù)步驟執(zhí)行。當執(zhí)行時,和正常步驟一樣,成功則繼續(xù),失敗則該用例失敗。
進階 元素管理測試用例中元素是以 page + name 為唯一標識,來頁面元素表中查找定位信息的。因此,不同 page 下的元素 name 可以相同,但不能和“通用”下的相同。
測試用例中,如果 page 不為“通用”,當
“通用”是方便我們寫頁面元素表的,寫用例時我們建議還是用
在瀏覽器中,有可能會打開多個標簽頁,我們叫它為窗口。當你新打開一個標簽頁時,你可以在測試數(shù)據(jù)中給它起個名字,格式為:新窗口=
操作 | 頁面 | 元素 | 測試數(shù)據(jù) |
---|---|---|---|
打開 | 通用 | 百度搜索鏈接 | 新窗口=百度搜索窗口 |
檢查 | 百度搜索頁面 | 頁面標題 | 百度一下,你就知道 |
當你給新的標簽頁起了窗口名字,它之后步驟的頁面("通用"除外)就會綁定到這個窗口。如上面第 2 步,“百度搜索頁面”會綁定到“百度搜索窗口”。那么之后的步驟或用例中,即使打開了多個標簽頁,只要頁面是“百度搜索頁面”,就會切換到“百度搜索窗口”這個標簽頁上操作。
注意:“通用”是不綁定到任何窗口的,也不做窗口切換,它直接在“當前窗口”操作。
“當前窗口”規(guī)則為:
執(zhí)行到某個步驟時,“當前窗口”是瀏覽器焦點所在的窗口,也就是上個步驟執(zhí)行操作的窗口。
如果此步驟的頁面已綁定到其他窗口,則“當前窗口”會切換過去。
如果此步驟的頁面尚未捆定任何窗口,則會捆定到“當前窗口”。
上個步驟如果是新打開的窗口,則“當前窗口”是新打開的窗口。
注意:
如果打開了 2 個或以上窗口,沒有起名字的窗口,在執(zhí)行到切換窗口的步驟時,會自動被關(guān)掉。
起了名字的窗口不會被關(guān)掉。
但如果起了同樣的名字,則原先的那個窗口會被關(guān)掉,綁定在其上面的頁面也會被注銷。
測試執(zhí)行python start.py
測試報告見 report 目錄
QQ交流群:158755338 (驗證碼:python)
項目地址:https://github.com/tonglei100...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40944.html
摘要:作為微服務的基礎(chǔ)設(shè)施之一,背靠強大的生態(tài)社區(qū),支撐技術(shù)體系。微服務實踐為系列講座,專題直播節(jié),時長高達小時,包括目前最流行技術(shù),深入源碼分析,授人以漁的方式,幫助初學者深入淺出地掌握,為高階從業(yè)人員拋磚引玉。 簡介 目前業(yè)界最流行的微服務架構(gòu)正在或者已被各種規(guī)模的互聯(lián)網(wǎng)公司廣泛接受和認可,業(yè)已成為互聯(lián)網(wǎng)開發(fā)人員必備技術(shù)。無論是互聯(lián)網(wǎng)、云計算還是大數(shù)據(jù),Java平臺已成為全棧的生態(tài)體系,...
摘要:在上次的自動化測試系列二自動化測試系列二中為大家大體介紹了測試的概念及在豬齒魚中的實踐展開,本文主要圍繞測試進行概念介紹及中的實踐展開。手動測試要求測試人員在每個元素上手動執(zhí)行每個測試。主要是用于回歸測試和同一軟件的新版本測試。 UI 測試是一種測試類型,也稱為用戶界面測試,通過該測試,我們...
摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。背后的故事本文是對于年之間世界發(fā)生的大事件的詳細介紹,闡述了從提出到角力到流產(chǎn)的前世今生。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為新聞熱點、開發(fā)教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡迎...
摘要:概述是由有贊開發(fā)的自動化工具,并以此實現(xiàn)了端和端的核心業(yè)務的自動化。旨在簡化開源工具提供的接口,方便自動化測試用例的設(shè)計。元素定位自動化用例其實可以分成兩部分,定位元素調(diào)用接口操作該元素。一臺用于跑自動化用例的服務器。 概述 Bee 是由有贊 QA 開發(fā)的 UI 自動化工具,并以此實現(xiàn)了 web 端和 wap 端的核心業(yè)務的自動化。旨在簡化開源工具提供的接口,方便 UI 自動化測試用例...
閱讀 3110·2021-11-10 11:36
閱讀 3312·2021-10-13 09:40
閱讀 6051·2021-09-26 09:46
閱讀 662·2019-08-30 15:55
閱讀 1409·2019-08-30 15:53
閱讀 1579·2019-08-29 13:55
閱讀 2997·2019-08-29 12:46
閱讀 3204·2019-08-29 12:34