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