TestNG:如何按特定顺序启动@Test

时间:2016-02-28 12:50:43

标签: selenium-webdriver automation testng

我是TestNG的新手,我遇到了问题。     根据我目前的代码(见下文),我得到了这个结果:

  1. 浏览器启动(确定)
  2. runTest2()开始(问题)
  3. runTest1()开始(问题)
  4. tearDown()开始(确定)
  5. 目标:我希望按此顺序执行此操作(序列)

    1. 浏览器启动(确定)
    2. runTest1()开始
    3. runTest2()开始
    4. tearDown()开始(确定)
    5. 问题:我该如何实现?

          @BeforeMethod
          public void init() {
             //startBrowser
          }
      
          @Test
          public void runTest1() {
            System.out.printline("runTest1() is started...");
          }
      
          @Test
          public void runTest2() {
            System.out.printline("runTest2() is started...");
          }
      
          @AfterMethod
          public tearDown() {
              //quit browser
          }
      

3 个答案:

答案 0 :(得分:1)

您可以使用dependsOnMethods

@BeforeMethod
public void init() {
   //startBrowser
}

@Test
public void runTest1() {
  System.out.printline("runTest1() is started...");
}

@Test(dependsOnMethods = { "runTest1" }, alwaysRun=true)
public void runTest2() {
  System.out.printline("runTest2() is started...");
}

@AfterMethod
public tearDown() {
    //quit browser
}

alwaysRun=true使其成为一种软依赖,即使runTest2失败,也会执行runTest1。 如果您想要一个硬依赖,请忽略alwaysRun=true

答案 1 :(得分:0)

  • 您是否需要为每种测试方法打开/关闭浏览器?如果没有,则使用BeforeTestAfterTest代替BeforeMethodAfterMethod
  • 使用priority注释Test注释来设置必须执行这些参数的顺序。

    @BeforeTest
    public void init() {
      System.out.println("starts Browser");
    }
    
    @Test(priority = 1)
    public void runTest1() {
      System.out.println("runTest1() is started...");
    }
    
    @Test(priority = 2)
    public void runTest2() {
      System.out.println("runTest2() is started...");
    }
    
    @AfterTest
    public void tearDown() {
        System.out.println("quits Browser");
    }
    

我低于输出。

 starts Browser
 runTest1() is started...
 runTest2() is started...
 quits Browser

答案 2 :(得分:0)

你好@David& @Vinoth,

谢谢你的快速回答。 这两种解决方案对我来说都很好,但在这种情况下我更喜欢@Vinoth的解决方案,因为我不需要在runTest1和runTest2之间启动/关闭浏览器。 : - )

再次感谢你们两位。 ; - )))

干杯 罗兰