章节十六3-TestNG方法和类注解

Posted luohuasheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了章节十六3-TestNG方法和类注解相关的知识,希望对你有一定的参考价值。

一、Test Suite(测试套件)

我们通常认为一个testcase就是一个测试方法,但是会有很多的testcase,所以我们不可能把所有的testcase放到同一个测试类中,假如需要测试的页面有10个,我们需要创建不同的类来测试这10个页面的具体功能,测试具体功能的测试用例会放到具体的测试类中,把这些所有的测试类组合起来就成了Test Suite。可以根据我们的测试目的,选择一些类来组成Test Suite。可以选择一些基本功能的测试类,组成冒烟测试的测试类,冒烟测试可以快速的检验软件的基本功能,也可以选择一些测试类组成回归测试的test suite。

 

二、Test Suite案例演示----》如何一次运行多个测试类

1、首先新建两个testcase

 1 package testclasses;
 2 
 3 import org.testng.annotations.Test;
 4 import org.testng.annotations.BeforeMethod;
 5 import org.testng.annotations.AfterClass;
 6 import org.testng.annotations.AfterMethod;
 7 import org.testng.annotations.BeforeClass;
 8 
 9 public class TestNG_TestClass1 
10 
11     @BeforeClass
12     public void beforeClass() 
13         System.out.println("\\nClass1-->beforeMethod在类里所有的方法运行前跑");
14     
15 
16     @AfterClass
17     public void afterClass() 
18         System.out.println("\\nClass1-->afterClass在类里所有的方法运行后跑\\n");
19     
20 
21     @BeforeMethod
22     public void beforeMethod() 
23         System.out.println("\\nClass1-->BeforeMethod每个测试方法运行前跑");
24     
25 
26     @AfterMethod
27     public void afterMethod() 
28         System.out.println("\\nClass1-->afterMethod每个测试方法运行后跑");
29     
30 
31     @Test
32     public void test1() 
33         System.out.println("\\nClass1-->test1测试方法");
34     
35 
36     @Test
37     public void test2() 
38         System.out.println("\\nClass1-->test2测试方法");
39     
40 
 1 package testclasses;
 2 
 3 import org.testng.annotations.Test;
 4 import org.testng.annotations.BeforeMethod;
 5 import org.testng.annotations.AfterMethod;
 6 import org.testng.annotations.BeforeClass;
 7 import org.testng.annotations.AfterClass;
 8 
 9 public class TestNG_TestClass2 
10 
11     @BeforeClass
12     public void beforeClass() 
13         System.out.println("\\nClass2-->beforeMethod在类里所有的方法运行前跑");
14     
15 
16     @AfterClass
17     public void afterClass() 
18         System.out.println("\\nClass2-->afterClass在类里所有的方法运行后跑\\n");
19     
20 
21     @BeforeMethod
22     public void beforeMethod() 
23         System.out.println("\\nClass2-->BeforeMethod每个测试方法运行前跑");
24     
25 
26     @AfterMethod
27     public void afterMethod() 
28         System.out.println("\\nClass2-->afterMethod每个测试方法运行后跑");
29     
30 
31     @Test
32     public void test1() 
33         System.out.println("\\nClass2-->test1测试方法");
34     
35 
36     @Test
37     public void test2() 
38         System.out.println("\\nClass2-->test2测试方法");
39     
40 

2、新建一个xml文件

xml是标记型语言,是一种简单的数据存储语言,用一系列简单的标记来描述数据,把数据放在标签中。

技术图片技术图片

<!-- 没有此行配置运行时会报错 -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!-- name中的值表示命名,可随意命名 -->
<suite name="Regression TestSuite">
<!-- name中的值表示命名,可随意命名 -->
<test name="Application Test">
<!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
<classes>
<class name="testclasses.TestNG_TestClass1"></class>
<class name="testclasses.TestNG_TestClass2"></class>
</classes>
</test>
</suite>

3、运行结果成功:

从运行结果中可以看出,当我们在配置完xml文件后,直接运行xml文件,2个testcase就能够一起运行成功了

技术图片技术图片

 

三、@BeforeSuite和@AfterSuite

@BeforeSuite:表示在test suite中的所有测试类在执行前就先运行带有该注解方法中的代码。

 @AfterSuite:表示在test suite中的所有测试类执行完成后再运行带有该注解方法中的代码。

技术图片

 1、新建一个带有@BeforeSuite和@AfterSuite注解的类

 1 package base;
 2 
 3 import org.testng.annotations.AfterClass;
 4 import org.testng.annotations.AfterSuite;
 5 import org.testng.annotations.BeforeClass;
 6 import org.testng.annotations.BeforeSuite;
 7 
 8 public class BaseTestSuite 
 9 
10     @BeforeClass
11     public void beforeClasss() 
12         System.out.println("\\nBaseTestSuite-->beforeClass在每个测试类运行前跑");
13     
14 
15     @AfterClass
16     public void afterClasss() 
17         System.out.println("\\nAfterClass-->afterClass在每个测试类运行完成后跑\\n");
18     
19 
20     @BeforeSuite
21     public void beforeSuite() 
22         System.out.println("\\nBeforeSuite-->beforeSuite在每个test suite运行前跑");
23     
24 
25     @AfterSuite
26     public void afterSuite() 
27         System.out.println("\\nBeforeSuite-->beforeSuite在每个test suite运行完成后跑\\n");
28     
29 

2、让test suite中的TestNG_TestClass1类和TestNG_TestClass2类继承新建的类BaseTestSuite 。

技术图片

技术图片

3、运行xml配置文件

<!-- 没有此行配置运行时会报错 -->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<!-- name中的值表示命名,可随意命名 -->
<suite name="Regression TestSuite">
    <!-- name中的值表示命名,可随意命名 -->
    <test name="Application Test">
        <!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
        <classes>
            <class name="regressionsuite.TestNG_TestClass1"></class>
            <class name="regressionsuite.TestNG_TestClass2"></class>
        </classes>
    </test>
</suite>

4、运行结果

从运行结果中我们可以看出,@BeforeSuite和@AfterSuite分别只在所有的test suite运行前和介绍后运行一次

技术图片技术图片

 

 四、@BeforeTest和@AfterTest注解

@BeforeTest:使用这个注解的方法会在xml文件中的test标签中的每个test方法运行之前运行。

@AfterTest:使用这个注解的方法会在xml文件中的test标签中的每个test方法运行之后运行。

 技术图片

 1 <!-- 没有此行配置运行时会报错 -->
 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 3 <!-- name中的值表示命名,可随意命名 -->
 4 <suite name="Regression TestSuite">
 5     <!-- name中的值表示命名,可随意命名 -->
 6     <test name="Application Test">
 7         <!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
 8         <classes>
 9             <class name="regressionsuite.TestNG_TestClass1"></class>
10             <class name="regressionsuite.TestNG_TestClass2"></class>
11         </classes>
12     </test>
13     
14     <test name="Application Test">
15         <!-- name中的值为需要测试的具体类名,格式:包名.类名 -->
16         <classes>
17             <class name="regressionsuite.TestNG_TestClass1"></class>
18             <class name="regressionsuite.TestNG_TestClass2"></class>
19         </classes>
20     </test>
21 </suite>

 

 

 五、@BeforeClass和@AfterClass注解

@BeforeClass:使用这个注解的方法会在当前这个类的第一个test方法运行之前运行。

@AfterClass:使用这个注解的方法会在当前这个类的最后一个test方法运行之后运行。

 

六、@BeforeMethod和@AfterMethod注解

@BeforeMethod:使用这个注解的方法会在每个test方法运行之前运行。

@AfterMethod:使用这个注解的方法会在每个test方法运行之后运行。

 

注:带@BeforeTest和@AfterTest、@BeforeSuite和@AfterSuite注解的方法不能在类中直接运行(直接运行会报如下图所示的错误信息),必须在xml中才能运行。

技术图片

 

 

 

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

欢迎关注,转载请注明来源。

以上是关于章节十六3-TestNG方法和类注解的主要内容,如果未能解决你的问题,请参考以下文章

章节十六6-xml参数化and并行case

5-1 美化效果章节介绍

汇编语言第一章节知识总结

Spring源码剖析-基于注解的IOC启动流程

SpringBoot | 第六章:常用注解介绍及简单使用

LaTeX使用titlesec宏包改变章节编号形式的方法