您的位置:首页 > 其它

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

2017-02-28 22:31 706 查看
                                            TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言

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

public
class
Annotation {

  @Test

  public
void
testCase1() {

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

  }

  @Test

  public
void
testCase2() {

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

  }

  @BeforeMethod

  public
void
beforeMethod() {

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

  }

 

  @AfterMethod

  public
void
afterMethod() {

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

  }

 

  @BeforeClass

  public
void
beforeClass() {

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

  }

 

  @AfterClass

  public
void
afterClass() {

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

  }

 

  @BeforeTest

  public
void
beforeTest() {

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

  }

 

  @AfterTest

  public
void
afterTest() {

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

  }

 

  @BeforeSuite

  public
void
beforeSuite() {

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

  }

 

  @AfterSuite

  public
void
afterSuite() {

    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
void
OpenBrowser() {

    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);

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

         当断言执行失败,不继续执行后续语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: