解決TestNG測試用例依賴性的問題
阿新 • • 發佈:2019-01-05
如果測試用例間有依賴性,也就是如果想執行B,就必須要先執行A。那麼用例的執行順序就很關鍵,如何來指定用例的順序呢,有這樣幾種方法:
1. 給用例加編號:
public void test01Login(){
XXX
}
public void test02Add(){
XXX
}
public void test03Delete(){
XXX
}
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("//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開始執行了");