为了账号安全,请及时绑定邮箱和手机立即绑定

TestNG中注解使用 笔记

标签:
测试

一、Before和After类注解
1、@BeforeSuite、@AfterSuite
2、@BeforeTest、@AfterTest
3、@BeforeClass、@AfterClass
4、@BeforeMethod、@AfterMethod
5、执行顺序:创建TestNGDomr01 TestNGDomr02 两个文件内容一样,看代码执行结果。

import org.testng.annotations.*;

public class TestNGDome01 {
    @BeforeSuite
    public void BeforeSuite(){
        System.out.println(this.getClass().getName()+":@BeforeSuite");
    }
    @BeforeTest
    public void BeforeTest(){
        System.out.println(this.getClass().getName()+":@BeforeTest");
    }
    @BeforeClass
    public void BeforeClass(){
        System.out.println(this.getClass().getName()+":@BeforeClass");
    }
    @BeforeMethod
    public void BeforeMethod(){
        System.out.println(this.getClass().getName()+":@BeforeMethod");
    }
    @Test
    public void Test01(){
        System.out.println(this.getClass().getName()+":@Test01");
    }
    @Test
    public void Test02(){
        System.out.println(this.getClass().getName()+":@Test02");
    }
    @AfterMethod
    public void AfterMethod(){
        System.out.println(this.getClass().getName()+":@AfterMethod");
    }
    @AfterClass
    public void AfterClass(){
        System.out.println(this.getClass().getName()+":@AfterClass");
    }
    @AfterTest
    public void AfterTest(){
        System.out.println(this.getClass().getName()+":2AfterTes");
    }
    @AfterSuite
    public void AfterSuite(){
        System.out.println(this.getClass().getName()+"@AfterSuite");
    }
}

//结果

TestNGDome01:@BeforeSuite
TestNGDome02:@BeforeSuite
TestNGDome01:@BeforeTest
TestNGDome02:@BeforeTest
TestNGDome01:@BeforeClass
TestNGDome01:@BeforeMethod
TestNGDome01:@Test01
TestNGDome01:@AfterMethod
TestNGDome01:@BeforeMethod
TestNGDome01:@Test02
TestNGDome01:@AfterMethod
TestNGDome01:@AfterClass
TestNGDome02:@BeforeClass
TestNGDome02:@BeforeMethod
TestNGDome02:@Test01
TestNGDome02:@AfterMethod
TestNGDome02:@BeforeMethod
TestNGDome02:@Test02
TestNGDome02:@AfterMethod
TestNGDome02:@AfterClass
TestNGDome01:@AfterTest
TestNGDome02:@AfterTest
TestNGDome01:@AfterSuite
TestNGDome02:@AfterSuite

===============================================
Suite1
Total tests run: 4, Failures: 0, Skips: 0
===============================================

Process finished with exit code 0

二、@Test的相关属性
1、alwaysRun:如果为ture,表示该测试方法所依赖的测试方法即使失败了也会继续执行。
2、dataProvider:选定传入参数的构造器。
3、dataProviderClass:确定参数构造器的Class类。
4、dependsOnGroups:确定依赖的前置测试组名。
5、dependsOnMethods:确定依赖的前置测试方法。
6、enabled:默认为true,如果指定为false,表示不执行该测试方法。
7、expectedException:指定期待测试方法抛出的异常,多个异常类型以逗号分隔。
8、groups:指定该测试方法所属的组,可以指定多个组,以逗号隔开。
9、invocationCount:指测试方法需要被调用的次数
10、invocationTimeOut:每一次超时的调用时间,单位是毫秒。
11、priority:测试方法优先级设置,数值越低,优先级越高。
12、timeOut:整个测试方法超时时间,单位是毫秒。

三、TestNG参数化
1、@Parameters,配合testng.xml使用,注意需要运行testng.xml文件不然会会报错

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class ParametersTestng {

    @Parameters({"first-name"})
    @Test
    public void test(String name){
        System.out.println(name);
    }

    @Parameters({"first-name","second-name"})
    @Test
    public void test2(String name1,String name2){
        System.out.println("full name:"+name1+" "+name2);
    }
}
//xml文件
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >

    <test name="test1" >
        <parameter name="first-name" value="@Test1" ></parameter>
        <parameter name="second-name" value="@Test2" ></parameter>
        <classes>
            <class name="ParametersTestng" />
        </classes>
    </test>
</suite>

2、@DataProvider
如果引用外部的@DataProvider,需要把方法声明为Static,引用时需要标注dataProviderClass。

import org.testng.annotations.Test;

public class ParametersTestng {

    @Test(dataProvider = "DataProviderTest",dataProviderClass = DataProviderTest.class)
    public void test(String name1,String name2){
        System.out.println(name1+":"+name2);
    }
}
public class DataProviderTest {
    @DataProvider(name = "DataProviderTest")
    public static Object[][] Datatest(){
        return new Object[][]{
            {"first-name","zhang"},
            {"second-name","san"}
        };
    }
}

四、xml配置文件
1、创建一个testng.xml文件,需要声明suite名称,用于描述要运行的测试脚本集。
2、可以选择一个包执行。
3、可以选择一个类执行
4、可以选择类下的某几个方法执行。
5、可以指定组执行。

//文件并不能执行 只是列出如何选择包、类、方法、组执行
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
    <test name="test1" >
        <groups>
            <run>
                <include name="01"></include>
            </run>
        </groups>
        <packages>
            <package name="com.java.code"></package>
        </packages>
        <classes>
            <class name="TestClass" >
                <methods>
                    <include name="test01"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

五、ReportNG报告
1、修改pom文件添加

<dependencies>
<dependency>
    <groupId>org.uncommons</groupId>
    <artifactId>reportng</artifactId>
    <version>1.1.4</version>
    <exclusions>
        <exclusion>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>4.0-beta5</version>
</dependency>
</dependencies>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/test/java/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <properties>
                        <property>
                            <name>usedefaultlisteners</name>
                            <value>false</value>
                        </property>
                        <property>
                            <name>listener</name>
                            <value>org.uncommons.reportng.HTMLReporter</value>
                        </property>
                    </properties>
                    <workingDirectory>target/</workingDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

2、修改testng.xml文件添加

//在<suite></suite>元素中进行配置
<listeners>
    <listener class-name="org.uncommons.reportng.HTMLReporter"/>
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter"/>
</listeners>

3、运行testng.xml文件,可以在当前目录下的test-output\html\index.html中查看生成的ReportNG报告。

其他
1、使用testng类需要在Project-》src-》test-》java下创建java class文件。
2、创建testng.xml文件,File-》New-》File-》testng.xml。
3、Project的Groupid可以在pom.xml文件中查看。

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件测试工程师
手记
粉丝
172
获赞与收藏
904

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消