TestNG记录

作者: LeslieFind | 来源:发表于2018-10-17 23:25 被阅读0次

    一、官方文档:

    http://testng.org/doc/documentation-main.html

    二、基本介绍

    1、作用:单元测试、集成测试框架
    2、特性:使用注解、线程池、参数化、数据驱动
    3、步骤:(提前配置好testng)代码中使用注解——配置testng.xml——运行TestNG

    三、常用注解:

    1. @DataProvider

    1.1、作用:提供数据的给test方法
    1.2、格式必须返回Object[][],并且里面的元素必须是Object[],可以理解为返回的是一个Sheet,元素都是每条记录
    1.3、属性:
     name:数据驱动名称,不填写默认为数据驱动方法名
     parallel:并行进程,默认false,若设置为true,则需要在.xml文件中的suite标签中添加属性data-provider-parallel-count="?"

    2. @Test

    2.1、作用:提供测试方法
    2.2、注意:参数类型与数据驱动中返回的每列的数据一致
    2.2、属性:
     dataProvider:数据驱动,值等于数据驱动名称
     dataProviderClass:数据驱动类,设置的话值为指定的提供数据驱动的类。
     在test方法中先写dataProviderClass属性,在写dataProvider属性
     groups:设定groups可以把多个测试方法放一个组中,值为组名,用花括号和双引号
     dependsOnGroups:先执行指定组里面的测试方法,再执行本测试方法,值为指定组名,用花括号和双引号,多个组名使用逗号隔开
     dependsOnMethods:先执行指定方法,再执行本测试方法,值为指定的方法名,用花括号和双引号,多个方法名使用逗号隔开
     invocationCount:调用次数
     invocationTimeout:单位毫秒,若invocationCount未设置,则此属性无意义
     successPercentage:成功百分率,只有在invocationCount设置时才有意义,一般都写100
     ThreadPoolSize:线程池大小,只有在invocationCount设置时有效
     timeout:超时,不需要跟着invocationCount出现,使用超时常用此属性
     priority:优先级,值越低越优先
     enabled:是否执行,默认true
     parameters:参数化,引用外部文件,

    3.@Parameters:

    3.1、作用:参数化,将外部的数据文件批量引入
    3.2、属性:
     value:参数化的名字,也就是,当.xml文件中有parameter标签时,parameter标签的name属性的值,值使用花括号和引号
    3.3、注意:和Before系列的注解一起使用,需在@dataProvider前执行;有该注解后,则不能单独运行TestNG类,而要运行testng.xml文件TestSuit,因为属性引用了testng.xml的标签属性
    3.4、举例子:

     <!-- testng.xml文件内容 -->
    
    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" parallel="false">
       <!-- 使用parameter标签,引入外部文件,name:起一个名字;value:文件的路径 -->
      <parameter name="filePathParam" value="D:\\app_testcase.xlsx"/>
    
      <test name="Test">
        <classes>
           <class name="com.youce.test.TestRun"/>
        </classes>
      </test>  
    </suite> 
    
    public class TestRun {
            // 初始化文件地址为null
        private String filePath = null;
      // 使用@Parameters注解引入外部文件,括号内的属性为testng.xml中parameter标签的name的值
      @Parameters({"filePathParam"})
      // 需使用先于@dataProvider的注解
      @BeforeTest
      // 该方法的作用主要是给文件地址变量filePath赋值
     //testng.xml中parameter标签的value的值,也就是文件的地址自动赋值给方法中的参数fromTestngXMLParam
      public void beforeTest(String fromTestngXMLParam){          
          this.filePath = fromTestngXMLParam;     
      }
        
      @Test(dataProvider="data")
      public void f(Object a,Object b,Object c,Object d,
              Object e,Object f) {
          System.out.println(a + "\t" + c);
      }
      
      @DataProvider
      public Object[][] data(){
          Object[][] value = null;
          try{
              // 该类是自己手动写的一个处理.xlsx文件,用来获取单元格内容
              // 该处传参为文件地址 
              ExcelUtil excel = new ExcelUtil(this.filePath);
              value = excel.getArrayCellVale(0);
          }catch(Exception e){
              e.printStackTrace();
          }   
          return value;
      }
    }
    
    
    4.按对记的:

    @BeforeSuite
    @AfterSuite

    @BeforeTest
    @AfterTest

    @BeforeGroups
    @AfterGroups

    @BeforeClass
    @AfterClass

    @BeforeMethod
    @AfterMethod

    四、.xml文件测试配置

    1、作用:测试套件TestSuit,可编辑测试配置,例如:运行指定的类或包,线程数,测试名称等

    2、标签:

    2.1、suite标签:
    测试套件,属性name为套件名称,属性parallel并行开关,默认false ;若parallel为true,则它的值可为"method"/"tests"/"classes"/"instances",且要新增属性thread-count,指定线程数

    2.2、test标签:
    测试用例,属性name为测试名称,可以有子标签classes和packages,他们下面继续可以有子class和package

    2.3、parameter标签:
    参数化标签,属性name为参数化名称,注解@Parameters与之保持一致,属性value为外部文件地址

    <!--testng.xml文件  -->
    
    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" parallel="false">
    <!-- <suite name="Suite" parallel="method" thread-count="5"> -->
    <!-- <suite name="Suite" parallel="tests" thread-count="5"> -->
        <!-- <parameter name="filePathParam" value="D:\\test01.xlsx"/> -->
        <parameter name="filePathParam" value="D:\\app_testcase.xlsx"/>
        
      <test name="Test">
        <classes>
          <!-- <class name="com.youce.test.TestRun"/> -->
            <!-- <method>
                <exclude name="f"/>
                <include name="f"/>
                </method> -->
          <class name="com.youce.test.NewTest2"/>
        </classes>
      </test> <!-- Test -->  
    </suite> 
    

    相关文章

      网友评论

        本文标题:TestNG记录

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