Selenium Web Driver自動化測試(java版)系列下半部分(29) - 用數據驅動搭建測試框架雛形(2) - 添加登錄失敗用例

上篇我們開始修改java包結構,分離測試用例、數據源、測試準備掃尾工作,今天再添加幾個關于登錄模塊的測試用例。我們之前演示了登錄成功的,有成功就有失敗,對于示例網站來說,我能想到的有以下三種失敗情況:

1. 員工代號或密碼錯誤;
2. 員工代號為空;
3. 員工代號正確,但密碼為空。

先看第一種情況。如果員工代號或密碼錯誤,點擊登錄按鈕后系統會用英文提示"usercode or password is incorrect"(員工代號或密碼錯誤):

我們要做的就是判斷這句話是否出現就行。所以,第一個失敗的測試用例如下:

1. 登錄http://www.cslm-test.com/hrsystem/index.php
2. 輸入錯誤的員工代號和密碼;
3. 點擊登錄按鈕(斷言點:出現"usercode or password is incorrect"的提示)。

先定位這個錯誤提示并放到登錄模塊的object repository中。在loginPage.properties中添加如下:

這個test case跟登錄成功的那個唯一不一樣的就是最后的斷言點,我們在LoginPage.java的末尾加入這個斷言:

這個方法叫做verifyErrMsgDisplay(),先判斷信息在不在,再判斷顯示不顯示。返回結果為布爾型,顯示返回true,不顯示返回false。接著添加一個測試數據的Excel文件,命名為TCLogin2.xlsx,然后添加數據:

之前說過,正確的密碼只有三組:

1)員工代號:1001,密碼:123
2)員工代號:1002,密碼:456
3)員工代號:1003,密碼:789

我們Excel里一組密碼錯誤一組員工代號錯誤,正合適。接下來在com.testalliance.hrsystem.tests中新建TCLogin2.java,寫測試用例:

里面的方法還是test(),我們直接用LoginPage的類實例調用verifyErrMsgDisplay()方法返回結果。最后在TestRunner.java中添加TCLogin2.java的聲明并執行test()方法:

執行一下,通過:

第二種情況是員工代號為空。此時會彈出提示框,說"Please enter usercode"(請輸入員工代號):

我們要做的就是判斷這個提示框是否出現而且提示框的文字是否顯示正確。所以,第二個失敗的測試用例如下:

1. 登錄http://www.cslm-test.com/hrsystem/index.php
2. 只輸入正確的密碼;
3. 點擊登錄按鈕(斷言點:出現"Please enter usercode"的提示框)。

提示框不同于一般的控件或元素,是通過driver進行轉換的,不需要放在object repository里,這步可以省了。接著我們在LoginPage.java的末尾加入如下兩個斷言方法:

一個是verifyErrAlertDisplay(),檢查提示框顯示不顯示;另一個是verifyErrAlertMsg(),檢查提示框的文本。在verifyErrAlertMsg()里先調用verifyErrAlertDisplay()確保顯示,然后再看文本內容。

下一步設計Excel文件,命名為TCLogin3.xlsx,然后添加數據:

有兩種情況會彈出"Please enter usercode"提示框,一種是只有員工代號是空的,另一種是員工代號和密碼都是空的。我用"null"表示空格。在com.testalliance.hrsystem.tests中新建TCLogin3.java,寫測試用例:

只要提示框的內容正確,就證明測試通過。再修改TestRunner.java,添加TCLogin3的調用過程:

但現在你執行這個程序肯定有錯,因為取回的員工代號或是密碼里的"null"會被當成普通字符串處理直接輸進文本框中。所以我們還需要修改一下LoginPage.java的login()方法:

很簡單,如果取出的是null,那就不執行輸入操作。最后執行一下:

第三種情況是員工代號正確,但密碼為空。點擊登錄按鈕后系統會用英文提示"Please enter password"(員工代號或密碼錯誤):

我們要做的就是還是判斷提示框是否出現而且提示框的文字是否顯示正確。所以,第三個失敗的測試用例如下:

1. 登錄http://www.cslm-test.com/hrsystem/index.php
2. 只輸入正確的員工代號;
3. 點擊登錄按鈕(斷言點:出現"Please enter password"的提示框)。

因為調用的還是verifyErrAlertDisplay()和verifyErrAlertMsg()這兩個方法,不用寫新的,所以我直接設計Excel文件,命名為TCLogin4.xlsx,然后添加數據:

只有一條數據,密碼位置是null,代表不用執行輸入密碼這步。在com.testalliance.hrsystem.tests中新建TCLogin4.java,寫測試用例:

再修改TestRunner.java,添加TCLogin4的調用過程:

最后完整執行一遍,測試通過。

這就是三個登錄失敗的用例,算上一個成功用例,關于登錄模塊就都寫完了。也印證了上一篇最后那張圖中TestRunner.java對于測試管理的角色。有人可能會問,那你寫幾個test case就得在TestRuner.java里初始化幾次,100個用例就得寫100遍,是不是太麻煩了?確實很麻煩,但我們也有辦法解決這個問題。不過我現在先不動它,當我們寫完下一個用戶模塊之后再一起修改。

這篇文章的源代碼在SeleniumExcelDataDrivenFrame2項目里邊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容