selenium的TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言_06

有睿
2023-12-01

                                            TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言


1.注解:新建testNG框架的Annotation类,代码如下

public classAnnotation {

  @Test

  public voidtestCase1() {

    System.out.println("测试用例1被执行");

  }

  @Test

  public voidtestCase2() {

    System.out.println("测试用例2被执行");

  }

  @BeforeMethod

  public voidbeforeMethod() {

    System.out.println("在每个测试方法开始运行前执行");

  }

 

  @AfterMethod

  public voidafterMethod() {

    System.out.println("在每个测试方法运行结束后执行");

  }

 

  @BeforeClass

  public voidbeforeClass() {

    System.out.println("在当前测试类的第一个测试方法之前调用执行");

  }

 

  @AfterClass

  public voidafterClass() {

    System.out.println("在当前测试类的最后一个方法执行结束后执行");

  }

 

  @BeforeTest

  public voidbeforeTest() {

    System.out.println("在测试类中的Test开始运行前执行");

  }

 

  @AfterTest

  public voidafterTest() {

    System.out.println("在测试类中的Test运行结束后执行");

  }

 

  @BeforeSuite

  public voidbeforeSuite() {

    System.out.println("当前测试集合中所有测试程序开始之前执行");

  }

 

  @AfterSuite

  public voidafterSuite() {

    System.out.println("当前测试集合所有测试程序执行结束后执行");

  }

 

}

执行结果:

当前测试集合中所有测试程序开始之前执行

在测试类中的Test开始运行前执行

在当前测试类的第一个测试方法之前调用执行

在每个测试方法开始运行前执行

测试用例1被执行

在每个测试方法运行结束后执行

在每个测试方法开始运行前执行

测试用例2被执行

在每个测试方法运行结束后执行

在当前测试类的最后一个方法执行结束后执行

在测试类中的Test运行结束后执行

当前测试集合所有测试程序执行结束后执行

 

2. 测试集合需要新建testng.xml文件并进行配置如下:

<?xmlversion="1.0" encoding="UTF-8"?>

<suite name="Suite"parallel="false">

 <test name="Grouping">

    <classes>

      <classname="demo.Annotation"/>

      <classname="demo.prihthello"/>

    </classes>

 </test> <!-- Test -->

</suite><!-- Suite -->

执行结果:执行了两个class里面的case

 

3. 用例分组groups关键字,并要配置testng.xml文件,代码如下:

public class grouping{

  @Test (groups={""})

  public void student(){

    System.out.println("student学生方法被调用");

  }

 

  @Test (groups={""})

  public void teacher(){

    System.out.println("teacher老师方法被调用");

  }

 

  @Test (groups={"动物"})

  public void cat() {

    System.out.println("cat小猫方法被调用");

  }

 

  @Test (groups={"动物"})

  public void dog() {

    System.out.println("dog小狗方法被调用");

  }

 

  @Test (groups={"","动物"})

  public void feeder(){

    System.out.println("feeder饲养员方法被调用");

  }

}

testng.xml配置如下:

<?xmlversion="1.0" encoding="UTF-8"?>

<suite name="Suite"parallel="false">

 <test name="Grouping">

    <groups>

      <define name="all">

        <include name="人"/>

        <include name="动物"/>

      </define>

      <run>

      <includename="all"/>

      </run>

    </groups>

    <classes>

      <classname="demo.grouping"/>

    </classes>

 </test> <!-- Test -->

</suite><!-- Suite -->

 

4. 依赖测试dependsonmethods参数,代码如下

//依赖测试

public class depends {

  @Test (dependsOnMethods={"OpenBrowser"})

  public void SignIn(){

    System.out.println("SignIn方法被调用");

  }

 

  @Test

  public voidOpenBrowser() {

    System.out.println("OpenBrowser方法被调用");

  }

 

  @Test (dependsOnMethods={"SignIn"})

  public void LogOut(){

    System.out.println("LogOut方法被调用");

  }

}

执行结果:

OpenBrowser方法被调用

SignIn方法被调用

LogOut方法被调用

 

 

5. 特定顺序执行 priority参数,代码如下:

public class priority{

     @Test(priority=3)

     public void test4() {

       System.out.println("test4被调用");

       Reporter.log("test4被调用");

     }

    

     @Test(priority=1)

     public void test2() {

       System.out.println("test2被调用");

       Reporter.log("test2被调用");

     }

    

     @Test(priority=2,enabled=false)

     public void test3() {

       System.out.println("test3被调用");

       Reporter.log("test3被调用");

     }

    

      @Test (priority=0)

      public void test1() {

        System.out.println("test1被调用");

      }

}

执行结果:

test1被调用

test2被调用

test3被调用

test4被调用

 

6.跳过某个case使用enable=false,代码如下

     @Test (enabled=false)

     public void test3() {

       System.out.println("test3被调用");

     }

执行结果:该test3用例不会被执行

7. 自定义日志Reporter.log(""),代码如下;

      @Test (priority=0)

      public void test1() {

        Reporter.log("test1被调用");

      }

执行结果:在index.html中Reporter.output模块显示“test1被调用”

 

8.断言Assert,代码如下:

Assert.assertTrue(true/false);

执行结果:当断言执行成功,会继续执行后续语句

         当断言执行失败,不继续执行后续语句

 类似资料: