1. 程式人生 > >解決TestNG測試用例依賴性的問題

解決TestNG測試用例依賴性的問題

如果測試用例間有依賴性,也就是如果想執行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開始執行了");