解決TestNG測試用例依賴性的問題
如果測試用例間有依賴性,也就是如果想執行B,就必須要先執行A。那么用例的執行順序就很關鍵,如何來指定用例的順序呢,有這樣幾種方法:
1. 給用例加編號:
public void test01Login(){ |
2. 加上關鍵字
硬依賴的例子:
@Test public void serverStartedOk() {} @Test(dependsOnMethods = { "serverStartedOk" }) public void method1() {} |
此例中,method1() 依賴于方法 serverStartedOk(),從而保證
serverStartedOk() 總是先運行。
public class Demo1 { WebDriver driver; @BeforeClass public void beforeClass() { System.setProperty("webdriver.ie.driver","E:\\WebDriver\\IEDriverServer.exe"); driver = new InternetExplorerDriver(); } //登錄博客 @Test public void login() throws InterruptedException { System.out.println("login開始執行了"); driver.get(http://blog.ifeng.com); driver.findElement(By.id("username")).sendKeys("itest20"); driver.findElement(By.id("password")).sendKeys("123456"); driver.findElement(By.xpath("http://input[@value='登錄']")).click(); driver.navigate().refresh(); } //驗證標題是否為空 @Test(dependsOnMethods = { "login" }) public void noSubject() throws InterruptedException{ System.out.println("noSubject開始執行了"); driver.get(http://blog.ifeng.com); String originalHandle = driver.getWindowHandle(); driver.findElement(By.linkText("發表博文")).click(); for(String winHandle: driver.getWindowHandles()){ if(winHandle!=originalHandle) driver.switchTo().window(winHandle); driver.manage().window().maximize(); } Thread.sleep(2000); Assert.assertTrue(FindElement.isElementExist(driver, By.id("saveArticle"))); driver.findElement(By.id("saveArticle")).click(); //判斷當標題為空時提示是否正確 boolean expected = true; boolean actual = (driver.findElement(By.id("blog_tishi")).getText()).endsWith("請填寫文章標題"); Assert.assertEquals(actual, expected, "標題為空"); Thread.sleep(3000); } //驗證內容是否為空 @Test(dependsOnMethods = { "noSubject" }) public void noContent() throws InterruptedException{ System.out.println("noContent開始執行了"); |
posted on 2013-08-14 10:25 順其自然EVO 閱讀(270) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學習