解决TestNG测试用例依赖性的问题

Sara/Sarah ·
更新时间:2024-11-10
· 687 次阅读

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



testng

需要 登录 后方可回复, 如果你还没有账号请 注册新账号