如果测试用例间有依赖性,也是如果想执行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开始执行了");