美文网首页
TestNG用法总结

TestNG用法总结

作者: 一见你就笑嘻嘻 | 来源:发表于2018-12-12 16:39 被阅读14次

TestNG用法总结

  • 常用注解见表格
注解 描述
@BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。
@AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 注解的方法将每个测试方法之前运行。
@AfterMethod 被注释的方法将被运行后,每个测试方法。
@DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。
  • TestNG的简单使用
package com.test;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.*;

public class Testng01 {
    @BeforeClass
    public void test() {
        System.out.println("11111111111");
        
    }
    @Test
    public void test2() {
        System.out.println("22222222222222");
        
    }
    @AfterClass
    public void test3() {
        System.out.println("333333333333");
    }

}

xml:

<!-- testng注解的普通用法 -->
    <test name="test2">
        <classes>
            <class name="com.test.Testng01" />
        </classes>
    </test>
  • 运行结果如图:


    运行结果
  • 组测试
    组测试即为在进行测试时可以通过testng.xml来指定执行相关的命名的组,使用@Test(groups = {"name"})注解来指定名称
    如下代码所示:
package com.test;

import org.testng.annotations.Test;

public class TestngLearn01 {
    
    @Test(groups = {"systemtest"})
    public void test1() {
        System.out.println("this is test learn01");
    }
    @Test(groups = {"functiontest"})
    public void test2() {
        System.out.println("this is test learn02");
    }
}

xml:

<test name = "test1" >
   <groups>
      <run>
         <include name = "systemtest" />
      </run>
   </groups>
   <packages>
      <package name = "com.test.*" />
   </packages>
</test>
  • 忽略测试
    使用@Test(enabled = false)来说明该这个case不需要执行

代码:

package com.test;

import org.testng.annotations.Test;

//testng忽略测试
public class TesgNGIgnore {
    
    @Test(enabled = false)
    public void testIgnore1() {
        System.out.println("这条测试信息被忽略");
    }
    
    @Test
    public void testIgnore2() {
        System.out.println("这条测试用来验证是否被忽略");
    }

}
  • 异常测试
    在工作总可能会碰到需要这个方法抛出什么样的异常来的测试,此时使用异常测试

代码:

package com.test;

import org.testng.annotations.Test;

//异常测试
public class ExceptionTest {
    
    @Test(expectedExceptions = IllegalArgumentException.class,expectedExceptionsMessageRegExp="NullPoint")
    public void testException() {
        throw new IllegalArgumentException("NullPoint");
    }
}

  • 依赖测试
    如代码所示:
package com.test;

import org.testng.annotations.Test;

/**
 * 如果setupEnv成功执行则会执行testMessage;
 * 如果setupEnv未成功执行则不会执行testMessage。
 * **/
public class DependsTest {
       @Test
        public void setupEnv(){
            System.out.println("this is setup Env");
           // throw new RuntimeException(); 若setupEnv执行失败则会跳过testMessage
        }
        
        @Test(dependsOnMethods = {"setupEnv"})
        public void testMessage(){
            System.out.println("this is test message");
        }

}

  • 参数化测试01
    testng.xml 方式使代码和测试数据分离,方便维护
package com.test;

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

/**
 * 
 * testng.xml 方式使代码和测试数据分离,方便维护
 * TestNG参数化测试01
 * */
public class ParametricTesting01 {
    @Test
    @Parameters({"test1","test2"})
    public void ParaTest(String test1,String test2) {
        System.out.println("This is " + test1 + test2);
    }

}

xml:

 <!-- 参数测试xml方式 -->
    <parameter name = "test1" value ="heqq"/>
    <parameter name="test2" value=" test"/>
    <test name = "test3">
        <classes>
            <class name = 'com.test.ParametricTesting01'/>
        </classes>      
    </test>
  • 参数化测试02
    通过DataProvider传递参数,注意传递参数时参数是按照传参的顺序排列的参数组
package com.test;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

/**
 * 
 * 通过DataProvider传递参数
 * TestNG参数化测试02
 * */
public class ParametricTesting02 {
    
        
        @DataProvider(name = "username")
        public Object[][] Users(){
            return new Object[][] {
                {"root "," password"},
                {"test "," heqq"},  
                {"qq "," he"}
            };
        }
        
    @Test(dataProvider = "username")
    public void user(String name,String password) {
        System.out.println("My name is " + name +"but my password is" + password);
    }
}

全部的xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Fourth suite" verbose="1" >
<!-- 组测试 -->
<test name = "test1" >
   <groups>
      <run>
         <include name = "systemtest" />
      </run>
   </groups>
   <packages>
      <package name = "com.test.*" />
   </packages>
   
</test>
<!-- testng注解的普通用法 -->
    <test name="test2">
        <classes>
            <class name="com.test.Testng01" />
        </classes>
    </test>
    <!-- 参数测试xml方式 -->
    <parameter name = "test1" value ="heqq"/>
    <parameter name="test2" value=" test"/>
    <test name = "test3">
        <classes>
            <class name = 'com.test.ParametricTesting01'/>
        </classes>      
    </test>
</suite>


相关文章

  • TestNG用法总结

    TestNG用法总结 常用注解见表格 TestNG的简单使用 xml: 运行结果如图:运行结果 组测试组测试即为在...

  • TestNG系列-TestNG入门

    分享一些存货,主要是TestNG的一些用法,分三篇,这是第一篇。猛戳:第二篇-TestNG进阶 一、TestNG是...

  • TestNG 用法概括

    一. TestNG的HelloWorld 创建一个maven项目 pom.xml中注入TestNG的依赖 此时项目...

  • unittest用法

    unittest 是python的单元测试框架,类似 java的 junit ,TestNG ,用法简单,可用做单...

  • @Parameter注解

    通过TestNG实现参数化常用两种方式,此篇讲述@Parameters方式的传参用法;@Parameters读取t...

  • TestNG学习总结

    基本测试步骤:1)编写基本业务逻辑和测试代码2)添加配置.xml文件3)运行(run as TestNG Suit...

  • [TestNG]TestNG整合ReportNG

    TestNG系列:TestNG和Junit4的参数化测试对比TestNG运行指定测试套件TestNG整合Repor...

  • [TestNG]Spring/Spring Boot+Maven

    TestNG系列:TestNG和Junit4的参数化测试对比TestNG运行指定测试套件TestNG整合Repor...

  • [TestNG]TestNG的参数化测试实战

    TestNG系列:TestNG和Junit4的参数化测试对比TestNG运行指定测试套件TestNG整合Repor...

  • [TestNG]TestNG运行指定测试套件testng.xml

    TestNG系列:TestNG和Junit4的参数化测试对比TestNG运行指定测试套件TestNG整合Repor...

网友评论

      本文标题:TestNG用法总结

      本文链接:https://www.haomeiwen.com/subject/mmhphqtx.html