您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > TestNG
WebDriver + TestNG應(yīng)用
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/9/18 14:00:28 ] 推薦標(biāo)簽:開(kāi)源測(cè)試 軟件測(cè)試 TestNG

  Selenium 2 大的更新是集成了WebDriver。這兩者是什么關(guān)系呢?如果你搜索WebDriver,第一條結(jié)果是Selenium。其實(shí)WebDriver和Selenium可以說(shuō)是在實(shí)現(xiàn)UI Automation的競(jìng)爭(zhēng)對(duì)手。Selenium是運(yùn)行在JavaScript的sandbox里面,所以很容易支持不同的瀏覽器;而WebDriver則是直接操作瀏覽器本身,更接近用戶(hù)的真實(shí)操作,但正因?yàn)槿绱耍訵ebDriver在多瀏覽器/操作系統(tǒng)的支持上要落后于Selenium。不過(guò)從Selenium 2開(kāi)始,這兩個(gè)項(xiàng)目合并了,可以繼續(xù)用原來(lái)的Selenium,也可以考慮遷移到WebDriver。我個(gè)人認(rèn)為WebDriver應(yīng)該是以后的大趨勢(shì),還是值得遷移的。至于你信不信,我反正是信了。
  作為一個(gè)輕量級(jí)的UI Automation框架,需要寫(xiě)一些驅(qū)動(dòng)它的代碼,大部分人會(huì)選擇JUnit,因?yàn)镴Unit是單元測(cè)試的事實(shí)標(biāo)準(zhǔn);但是我會(huì)用TestNG。這些UI Automation的東西,它們本身不是單元測(cè)試,而且也沒(méi)有太多單元測(cè)試的風(fēng)格。
  從一段簡(jiǎn)單的測(cè)試開(kāi)始
public class GoogleTest  {
@Test
public void search(ITestContext context) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("magus");
element.submit();
Assert.assertTrue(driver.getTitle().contains("magus"), "Something wrong with title");
}
}
  TestNG應(yīng)用了Java的Annotations,只需要在測(cè)試方法上面打上@Test可以標(biāo)示出search是一個(gè)測(cè)試方法。用TestNG運(yùn)行測(cè)試還需要一個(gè)testng.xml的文件,文件名其實(shí)可以隨便起,沒(méi)有關(guān)系的。
<suite name="Magus demo" verbose="2">
<test name="Search function">
<classes>
<class name="test.GoogleTest">
<methods>
<include name="search" />
</methods>
</class>
</classes>
</test>
</suite>
  我想讓測(cè)試更加靈活,1. 可以配置使用任意支持的瀏覽器進(jìn)行測(cè)試;2. 配置所有Google的URL;3. 配置搜索的關(guān)鍵字。修改后的代碼:
public class GoogleTest  {
WebDriver driver;
@Parameters({"browser"})
@BeforeTest
public void setupBrowser(String browser){
if (browser.equals("firefox")){
driver = new FirefoxDriver();
} else {
driver = new ChromeDriver();
}
}
@Parameters({ "url", "keyword" })
@Test
public void search(String url, String keyword, ITestContext context) {        driver.get(url);
WebElement element = driver.findElement(By.name("q"));
element.sendKeys(keyword);
element.submit();
Assert.assertTrue(driver.getTitle().contains(keyword), "Something wrong with title");        }
}

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd