概述
框架提供了excel數據驅動方式運行測試用例的工具,本文將針對數據驅動,進行詳細演示。
詳見類:lazy.test.ui.browser.ExcelDataProvider
被測對象:
http://bj.sqyishi.com/user/login.htm
測試場景:
輸入用戶名,點擊登錄,校驗各種異常輸入
輸入後,紅框裏會出現一些異常提示,如圖:
bean層代碼:
使用插件生成
package test;
import lazy.test.ui.annotations.*;
import lazy.test.ui.beans.PageBean;
import lazy.test.ui.controls.*;
import lazy.test.ui.browser.BrowserEmulator;
public class login extends PageBean {
@Xpath(xpath={"//input[@id='username']", "//input[@name='username']", "//input[contains(@class,'text highlight1')]"})
@Frame(frame="")
@Description(description="username")
public Text username;
@Xpath(xpath={"//button[@id='pwdLoginSubmit']", "/html/body/form/div/div[3]/div/div[8]/button"})
@Frame(frame="")
@Description(description="pwdLoginSubmit")
public Click pwdLoginSubmit;
public login(BrowserEmulator be) { super(be); }
}
page層代碼
import lazy.test.ui.browser.BrowserEmulator;
public class LoginRegisterBean {
private BrowserEmulator be;
Login loginBean = new Login(be);
//打開登陸頁
public void openLoginURL(){
be.open("http://bj.sqyishi.com/user/login.htm");
}
//校驗是否存在文字
public void expectTextCheck(String expectText){
be.expectTextExistOrNot(true, expectText, 3500);
}
//手機號輸入校驗
public void userNameCheck(String telephone, String expectText){
openLoginURL();
loginBean.username.input(userName);
loginBean.pwdLoginSubmit.click();
expectTextCheck(expectText);
}
}
數據驅動文件
1. Excel放在Data文件夾下,即根目錄的/data/下面
2. Excel命名方式:測試類名.xls,如圖中①
3. Excel的sheet命名方式:測試方法名,如圖中②
4. Excel第一行爲Map鍵值,如圖中第一行
5. 最後一樣必須以“#”號結尾,表示終止,如圖中③
6. 可以使用第一列控制其是否運行,如圖中④,第六行,不運行
Test層代碼
package com.ebl.UIAutomation.test.loginRegister;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import lazy.test.ui.browser.ExcelDataProvider;
public class LoginRegisterParamTest extends loginBaseTest{
//使用驅動數據運行測試用例
@Test(dataProvider = "dp" )
public void UsernameCheck(Map<String,String> data) {
if(data.get("isRun").equals("1")){//使用第一列控制其是否運行
loginPage.userNameCheck(data.get("telephone"), data.get("expectText"));
}
}
//根據類名、方法名,加載驅動數據
@DataProvider(name = "dp")
public Iterator<Object[]> dataFortestMethod(Method method) throws IOException {
return new ExcelDataProvider(this.getClass().getName(),method.getName());
}
}
運行
使用testng運行test:UsernameCheck
便會啓動瀏覽器
打開登錄頁面
一行爲一個case,按excel中順序,向用戶名框中填入telephone列的值,
點擊登錄,
校驗頁面上是否出現了expectText列的文字。