zoukankan      html  css  js  c++  java
  • Java--TestNG

     

    TestNG类的配置信息: 
      @BeforeSuite:在此套件中的所有测试运行之前,将运行带注释的方法。 
      @AfterSuite:在此套件中的所有测试运行后,将运行带注释的方法。 
      @BeforeTest:在运行属于<test>标记内的类的任何测试方法之前,将运行带注释的方法。 
      @AfterTest:在运行了属于<test>标记内的类的所有测试方法之后,将运行带注释的方法。 
      @BeforeGroups:此配置方法之前将运行的组列表。保证在调用属于任何这些组的第一个测试方法之前不久运行此方法。 
      @AfterGroups:此配置方法将在之后运行的组列表。保证在调用属于任何这些组的最后一个测试方法后不久运行此方法。 
      @BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。 
      @AfterClass:在运行当前类中的所有测试方法之后,将运行带注释的方法。 
      @BeforeMethod:带注释的方法将在每个测试方法之前运行。 
      @AfterMethod:带注释的方法将在每个测试方法之后运行。

     

    TestNG类的超类中的注释行为:

      在这种情况下,TestNG保证“@Before”方法以继承顺序执行(首先是最高超类,然后是继承链),而“@After”方法则按相反的顺序执行(向上继承链)。

     

    TestNG.xml文件样例:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
     3 <!-- @BeforeSuite -->
     4 <suite name="All Test Suite">
     5     <test verbose="1" preserve-order="true" name="Z:\project\XunitDemo">
     6         <!-- @BeforeGroups -->
     7         <groups>
     8             <dependencies>
     9                 <group name="group1" depends-on="" >
    10                     <classes>
    11                         <class name="QFDemo.LoginTest">
    12                             <methods>
    13                                 <parameter name="username" value="lisi"></parameter>
    14                                 <!-- 通过方法名来运行 -->
    15                                 <include name="testUserLogin"></include>
    16                                 <exclude name="testUserLogin1"></exclude>
    17                             </methods>
    18                         </class>
    19                         <!-- 通过类名来运行 -->
    20                         <class name="QFDemo.DataProviderParameterTest"></class>
    21                     </classes>
    22                 </group>
    23                 <!-- 通过groupName来运行 -->
    24                 <group name="group2" depends-on="">
    25                     <run>
    26                         <!-- 测试方法上可以定义groups = {"",""} -->
    27                         <include name="1group1"></include>
    28                         <exclude name="1group2"></exclude>
    29                     </run>
    30                 </group>
    31             </dependencies>
    32         </groups>
    33     </test>
    34 </suite>
    35 <!-- @AfterSuite -->
    View Code

    下表列出了所有的<suite>可接受合法属性。

    属性描述
    name 此套件的名称。这是一个强制性的属性。
    verbose 这个运行级别或冗长。一般verbose=从0到9的数,数越大表明testng的日志越详细,一般verbose=2
    parallel 由TestNG 运行不同的线程来运行此套件。
    thread-count 使用的线程数,如果启用并行模式(忽略其他方式)。
    annotations 在测试中使用注释的类型。
    time-out 默认的超时时间,将用于本次测试中发现的所有测试方法。

      • parallel =“methods”:TestNG将在不同的线程中运行所有测试方法。依赖方法也将在单独的线程中运行,但它们将遵循您指定的顺序。
      • parallel =“tests”:TestNG将在同一个线程中运行相同<test>标记中的所有方法,但每个<test>标记将位于一个单独的线程中。这允许您在同一个<test>中对所有非线程安全的类进行分组,并保证它们将在同一个线程中运行,同时利用TestNG使用尽可能多的线程来运行测试。
      • parallel =“classes”:TestNG将在同一个线程中运行同一个类中的所有方法,但每个类将在一个单独的线程中运行。
      • parallel =“instances”:TestNG将在同一个线程中运行同一实例中的所有方法,但两个不同实例上的两个方法将在不同的线程中运行。

    带注释的依赖关系:

      可以使用属性dependsOnMethodsdependsOnGroups(接受正则表达式作为参数),对发现的@Test注解。

      硬依赖:您依赖的所有方法必须运行并成功运行。如果您的依赖项中至少发生一次故障,则不会在报告中调用并将其标记为SKIP。

      软依赖:您将始终在您依赖的方法之后运行,即使其中一些方法失败了。当您只是想确保您的测试方法按特定顺序运行时,这很有用,但它们的成功并不真正取决于其他人的成功。通过@Test注释中添加“alwaysRun = true”来获得软依赖关系

    类级别注释:

      类级@Test注释的作用是使该类的所有公共方法成为测试方法,即使它们没有注释。如果要添加某些属性,仍可以在方法上重复@Test注释。

    忽略测试(使用注解@Ignore):

    • In a class
    • In a particular package
    • In a package and all of its child packages

    支持YAML文件作为指定套件文件:

    <!-- XML文件 -->
    <suite name="SingleSuite" verbose="2" thread-count="4">
     
      <parameter name="n" value="42" />
     
      <test name="Regression2">
        <groups>
          <run>
            <exclude name="broken" />
          </run>
        </groups>
     
        <classes>
          <class name="test.listeners.ResultEndMillisTest" />
        </classes>
      </test>
    </suite>
    
    <!-- 对应YAML文件 -->
    name: SingleSuite
    threadCount: 4
    parameters: { n: 42 }
     
    tests:
      - name: Regression2
        parameters: { count: 10 }
        excludedGroups: [ broken ]
        classes:
          - test.listeners.ResultEndMillisTest
    View Code

    数据驱动(参数类型可以任意对象:List、Map、String等):

     1 package QFDemo;
     2 
     3 import org.testng.annotations.BeforeGroups;
     4 import org.testng.annotations.DataProvider;
     5 import org.testng.annotations.Test;
     6 
     7 import java.util.ArrayList;
     8 import java.util.List;
     9 
    10 public class DataProviderParameterTest {
    11 
    12     @BeforeGroups(groups = "group10")
    13     public void groupsSetUp(){
    14         System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!groups!!!!!!!!!!!!!!!!!!!!!!!");
    15     }
    16 
    17     @Test(parameters = {"user","password"})
    18     public void testTwo(String user, String password){
    19         System.out.println("user is : " + user + " password is : " + password);
    20     }
    21 
    22     @Test(dataProvider = "listString", groups = "group10")
    23     public void testOne(List<String> stringList){
    24         for (String s:stringList){
    25             System.out.println(s);
    26         }
    27     }
    28 
    29     @DataProvider(name = "listString")
    30     public Object[][] provideP(){
    31         List<String> listOne = new ArrayList<String>();
    32         listOne.add("a");
    33         listOne.add("b");
    34         listOne.add("over");
    35         return new Object[][] {{listOne}};
    36     }
    37 }

     

    详情请至:https://testng.org/doc/documentation-main.html#introduction

     

  • 相关阅读:
    Devexpress GridView添加行号
    Devexpress GridControl 常用设置
    导入Excel部分数据导入不了的原因及处理
    GridView里面的HyperLink和ButtonField操作总结
    sybase数据表的导出与导入
    uniapp的unistarter的白名单访问模式需要绝对路径
    vue 用vif隐藏显示切换大量dom元素,导致一个页面上一个组件多次调用的created不能全部执行的修改方法
    2013腾讯编程马拉松初赛:小Q系列故事——屌丝的逆袭
    Tensorflow Federated(TFF)框架整理(上)
    Stateful TFF
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/10166452.html
Copyright © 2011-2022 走看看