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