Selenium Web Driver自動(dòng)化測(cè)試(java版)系列下半部分(36) - 用關(guān)鍵字驅(qū)動(dòng)實(shí)現(xiàn)自動(dòng)化測(cè)試框架(1) - 設(shè)計(jì)測(cè)試文件

上篇文章利用關(guān)鍵字驅(qū)動(dòng)配合POM演示了一個(gè)登錄案例,這篇我們把利用數(shù)據(jù)驅(qū)動(dòng)制作的測(cè)試框架改寫成用關(guān)鍵字驅(qū)動(dòng)制作的。首先,請(qǐng)結(jié)合以前的講解把數(shù)據(jù)驅(qū)動(dòng)版測(cè)試框架搞清楚。不要怕麻煩,搞清楚后下邊理解起來(lái)就方便多了。

和數(shù)據(jù)驅(qū)動(dòng)版一樣,關(guān)鍵字驅(qū)動(dòng)版也涵蓋登錄(EmpLogin)、員工信息(Employee)、工時(shí)表(Timesheet)以及網(wǎng)上商城(OnlineStore)這四個(gè)模塊。出于篇幅限制,我們只改寫登錄的部分,先回顧一下登錄成功的測(cè)試用例:

1. 打開(kāi)http://cslm-test.com/hrsystem/index.php;
2. 輸入用戶名"1001";
3. 輸入密碼"123";
3. 點(diǎn)擊登錄按鈕(斷言點(diǎn):home按鈕出現(xiàn)在home.php頁(yè));
4. 退出(斷言點(diǎn):登錄按鈕出現(xiàn)在index.php頁(yè))。

和數(shù)據(jù)驅(qū)動(dòng)版一樣,定位項(xiàng)目結(jié)構(gòu)時(shí)也需要四個(gè)包(部分) - com.testalliance.hrsystem.managers(測(cè)試中樞層),com.testalliance.hrsystem.objrepository(object聲明層),com.testalliance.hrsystem.pageobj(業(yè)務(wù)邏輯層),com.testalliance.hrsystem.test(功能/應(yīng)用層)。出于一些細(xì)節(jié)上的變化,負(fù)責(zé)測(cè)試用例的com.testalliance.hrsystem.tests可以不需要,一會(huì)兒就明白了。

com.testalliance.hrsystem.objrepository包里需要包含employeePage.properties和loginPage.properties兩個(gè)object文件,這點(diǎn)和數(shù)據(jù)驅(qū)動(dòng)版的一樣,不用修改:

com.testalliance.hrsystem.pageobj有一些變化。原先數(shù)據(jù)驅(qū)動(dòng)版里是loginPage.java,負(fù)責(zé)登錄模塊的各種操作,但現(xiàn)在因?yàn)橄到y(tǒng)代碼變化,我們可以直接寫成Page.java,原因一會(huì)兒討論:

com.testalliance.hrsystem.managers包里也一樣,還是包含相同的三個(gè)java文件 - DriverManager.java,負(fù)責(zé)driver的聲明;EnvManager.java,負(fù)責(zé)設(shè)置測(cè)試環(huán)境;TestRunner.java,負(fù)責(zé)測(cè)試框架入口:

com.testalliance.hrsystem.test也需要包含Test.java和Utility.java兩個(gè)文件,負(fù)責(zé)功能/應(yīng)用處理:

先來(lái)改Page.java。不管是哪個(gè)模塊,需要的都是那幾個(gè)操作,比如輸入、點(diǎn)擊、切換、刷新等等,所以我們直接把這些關(guān)鍵字都寫到一起:

從第76行開(kāi)始就是關(guān)鍵字操作。當(dāng)然,我這里寫得不全,其實(shí)操作還有很多,如果大家想到別的可以添在這里。

下一步是設(shè)計(jì)測(cè)試文件。關(guān)鍵字驅(qū)動(dòng)與數(shù)據(jù)驅(qū)動(dòng)的一個(gè)顯著不同點(diǎn)就在于測(cè)試文件,關(guān)鍵字驅(qū)動(dòng)是以操作為主體,并且步驟順序必須與用例一致。那么對(duì)于第一個(gè)測(cè)試用例 - 登錄成功,我們?cè)O(shè)計(jì)的文件應(yīng)當(dāng)是這樣的:

創(chuàng)建文件之前再想一下,如果登錄成功是這樣的,那第二個(gè)用例 - 員工代號(hào)或密碼錯(cuò)誤導(dǎo)致登錄失敗應(yīng)該怎么寫?是不是這樣:

你會(huì)發(fā)現(xiàn)這兩個(gè)test case前5步都是一樣的,是一個(gè)完整的登錄操作,而且要知道,登錄操作這5步在大多數(shù)的測(cè)試用例中都會(huì)出現(xiàn),很多功能都要依靠登錄作為第一步,如果每個(gè)用例的測(cè)試文件都重復(fù)前5步顯然太麻煩了,干脆咱們就把這5步都提取出來(lái),單獨(dú)放在一個(gè)文件里。新建文件夾testdata.functions -> login.xlsx:

把sheet的名稱定位login。我把測(cè)試網(wǎng)頁(yè)的網(wǎng)址也寫在了文件里,與代碼完全分離開(kāi)。與輸入、點(diǎn)擊、切換、刷新這種簡(jiǎn)單的操作不同,登錄操作屬于系統(tǒng)的功能操作,所以業(yè)內(nèi)又管這些功能操作叫做generic functions,這也是我為什么給這個(gè)文件夾起名為testdata.functions。

同樣,退出也是generic function,也經(jīng)常會(huì)在測(cè)試用例中重復(fù),所以我們也把它單獨(dú)提取出來(lái)放到另一個(gè)sheet里,:

雖然就1步,但因?yàn)橹貜?fù)性高,也單獨(dú)放。接下來(lái)把sheet的名字寫到測(cè)試文件中,替換掉原來(lái)的步驟。對(duì)于登錄成功用例:

我還加了一個(gè)叫Module的新列,先不用管它。對(duì)于失敗用例:

而且你還發(fā)現(xiàn)有一個(gè)叫LoginDetails的sheet,專門可以放多種測(cè)試數(shù)據(jù)。比如登錄失敗有可能是員工代號(hào)錯(cuò)誤,也有可能是密碼錯(cuò)誤,我們需要準(zhǔn)備兩組測(cè)試數(shù)據(jù):

測(cè)試文件到此準(zhǔn)備完畢,下篇我們修改測(cè)試步驟的執(zhí)行過(guò)程。再?gòu)?qiáng)調(diào)一遍,如果是個(gè)generic function,而且重復(fù)的可能性高,你可以給它單獨(dú)放到一個(gè)文件里,會(huì)省去很多麻煩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容