Java自动化测试框架-03 - TestNG之Test Group篇 - 大发11选5大发11选5我 们 一起组团打怪升级(详细教程)

大发11选5简介

  其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识。希望大家茅塞顿开 ,有着更进一步认识和了解测试组。

一、Test Group(测试组)

  TestNG 允许大发11选5你 将复杂的测试大发11选5方法 归类为不同的组。不仅仅是可以声明某个大发11选5方法 属于某个组,而且还可以让组包含其他的组。这样TestNG可以调用或者请求包含一组特定的组 (或者正则表达式)而排除其他不需要组的集合。这样,如果大发11选5你 打算将测试分成两份的时候,就无需重新编译。这个特点,会给大发11选5你 在划分组的时候带来很大的灵活性。

  组(Group)在testng.xml文件中指定,可以在<test>或<suite>标记下找到。<suite>标记中指定的组适用于下面的所有<test>标记。请注意,组在这些标记中是累积的:如果在<suite>中指定组“a”,在<test>中指定“b” ,则将包括“a”和“b”。

例如,通常将测试划分为两种类别是再常见不过的了:

  检查性测试(Check-in test):这些测试在大发11选5你 提交新代码之前就会运行。它们一般都是很快进行的,并且保证没有哪个基本的功能是不好使的。

  功能性测试(Functional test):这些测试涵盖大发11选5你 的大发11选5软件 中所有的功能,并且至少每天运行一次,不过大发11选5你 也可能希望他们持续的运行。

  典型的来说,检测性测试通常是功能性测试的一个子集。TestNG允许大发11选5你 根据个人感觉来进行组划分。例如,大发11选5你 可能希望把大发11选5你 所有的测试类都划归为"functest"组,并且额外的有几个大发11选5方法 输入"checkintest"组。

TestNG允许您以非常直观的方式使用测试组指定。例如,您可以通过说明您的整个测试类属于“functest”组来构建测试,另外还有一些大发11选5方法 属于“checkintest”组:

package hongge;

import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import hongge.TestSum;

/**
 * @author 大发11选5北京
-宏哥
 * 
 * java自动化测试交流群:694280102
 *
 * Java自动化测试框架-03 - TestNG之Test Group篇
 *
 * 2019年10月22日
 */
public class Test1 {
    @Test(groups = { "functest", "checkintest" })  
      public void testMethod1() {  
      }  
      @Test(groups = {"functest", "checkintest"} )  
      public void testMethod2() {  
      }  
      @Test(groups = { "functest" })  
      public void testMethod3() {  
      }  
}

通过下面的内容调用TestNG

<test name="Test1">  
  <groups>  
    <run>  
      <include name="functest"/>  
    </run>  
  </groups>  
  <classes>  
    <class name="example1.Test1"/>  
  </classes>  
</test>  

以上会运行上面那个类中所有的测试,当要使用checkintest进行调用的时候,就仅仅运行testMethod1()和testMethod2()。

下面是另外一个例子。这次使用正则表达式。假定有些测试大发11选5方法 不应该运行在Linux环境下,大发11选5你 的测试会看起来像:

package hongge;

import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import hongge.TestSum;

/**
 * @author 大发11选5北京
-宏哥
 * 
 * java自动化测试交流群:694280102
 *
 * Java自动化测试框架-03 - TestNG之Test Group篇
 *
 * 2019年10月22日
 */
@Test
public class Test1 {
     @Test(groups = {"大发11选5Win
dows.checkintest"})   
     public void test大发11选5Win
dowsOnly() {  
     }  
     @Test(groups = {"linux.checkintest"})  
     public void testLinuxOnly() {  
     }  
     @Test(groups = {"大发11选5Win
dows.functest"})  
     public void test大发11选5Win
dowsToo() {  
     }  
}

然后大发11选5你 就可以使用下面这个 testng.xml 来只运行在大发11选5Win dows下的大发11选5方法 :

<test name="Test1">  
  <groups>  
    <run>  
      <include name="大发11选5Win
dows.*"/>  
    </run>  
  </groups>  
  <classes>  
    <class name="example1.Test1"/>  
  </classes>  
</test>  

注意:TestNG使用的是正则表达式,而不是通配符。注意这二者的区别

例如,"anything" 是匹配于 ".*" -- 点和星号 -- 而不是星号 "*".

二、MetaGroups(组中组

  测试组也可以包含其他组。这样的组叫做“元组”(MetaGroups)。例如,大发11选5你 可能要定义一个组all来包含其他的组,chekcintest 和functest。"functest"本身只包含了组大发11选5Win dows和linux,而"checkintest"仅仅包含大发11选5Win dows。大发11选5你 就可以在属性文件中这样定义:

<test name="Regression1">  
  <groups>  
    <define name="functest">  
      <include name="大发11选5Win
dows"/>  
      <include name="linux"/>  
    </define>  
    <define name="all">  
      <include name="functest"/>  
      <include name="checkintest"/>  
    </define>  
    <run>  
      <include name="all"/>  
    </run>  
  </groups>  
  <classes>  
    <class name="test.sample.Test1"/>  
  </classes>  
</test>  

三、排除组

   TestNG 允许大发11选5你 包含组,当然也可以排除之。

譬如说,因为最近的改动,导致当前的测试中断并且,大发11选5你 还没有时间修复这些问题都是司空见惯的。但是,大发11选5你 还需要自己的功能测试可以正确运行,所以,制药简单的让这些不需要的测试失效就可以了。但是别忘记在以后需要的时候,要重新让其生效。

   一个简单的办法来解决这个问题就是创建一个叫做"broken"组,然后使得这些测试大发11选5方法 从属于那个组。例如上面的例子,假设大发11选5我 知道testMethod2()会中断,所以大发11选5我 希望使其失效:

package hongge;

import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import hongge.TestSum;

/**
 * @author 大发11选5北京
-宏哥
 * 
 * java自动化测试交流群:694280102
 *
 * Java自动化测试框架-03 - TestNG之Test Group篇
 *
 * 2019年10月22日
 */
@Test(groups = {"checkintest", "broken"} )  
public void testMethod2() {}  

而大发11选5我 所需要做的一切就是从运行中排除这个组:

<test name="Simple example">  
  <groups>  
    <run>  
      <include name="checkintest"/>  
      <exclude name="broken"/>  
    </run>  
  </groups>  
  <classes>  
    <class name="example1.Test1"/>  
  </classes>  
</test>  

通过这种办法,大发11选5大发11选5我 们 既可以得到整洁的测试运行,同时也能够跟踪那些需要稍后修正的中断的测试。

注意:大发11选5你 可以可以通过使用"enabled"属性来完成,这个属性适用于@Test 和 @Before/After annotation。

四、局部组

可以在类级别定义组,之后还可以在大发11选5方法 级定义组:

package hongge;

import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import hongge.TestSum;

/**
 * @author 大发11选5北京
-宏哥
 * 
 * java自动化测试交流群:694280102
 *
 * Java自动化测试框架-03 - TestNG之Test Group篇
 *
 * 2019年10月22日
 */
@Test(groups = { "checkin-test" })  
public class All {  
@Test(groups = { "func-test" )  
public void method1() { ... }  
public void method2() { ... }  
}  

在这个类中,method2() 类级组"checkin-test"的一部分,而method1()即属于"checkin-test"也属于"func-test"组。

五、大发11选5方法 组

大发11选5你 可以排除或者包含单个大发11选5方法

<test name="Test1">

  <classes>

    <class name="example1.Test1">

      <methods>

        <include name=".*enabledTestMethod.*"/>

        <exclude name=".*brokenTestMethod.*"/>

      </methods>

     </class>

  </classes>

</test>

这可以派上用来停用单个大发11选5方法 而不必重新编译任何东西,但大发11选5我 不建议过多地使用这种大发11选5技术 ,因为如果大发11选5你 开始重构Java代码(正则表达式中使用的正则表达式),它会使大发11选5你 的测试框架崩溃。标签可能不再符合您的大发11选5方法 )。

小结

  嘿嘿!今天就分享到这里。下一篇计划是测试大发11选5方法 (Test Method),希望小伙伴们和童鞋们喜欢和继续关注宏哥!

有问题加入java自动化测试交流群:694280102

 

个人大发11选5公众号                                                              微信群 (微信群已满100,可以加宏哥的微信拉大发11选5你 进群,请备注:进群)          

                                                                 

您的肯定就是大发11选5我 进步的动力。如果大发11选5你 感觉还不错,就请鼓励一下吧!记得点波 大发11选5推荐  哦!!!(点击右边的小球即可!(^__^) 嘻嘻……)

posted @ 2019-10-22 14:00 大发11选5北京 -宏哥 阅读(...) 评论(...) 编辑 收藏