`

testNG学习之分组测试和忽略测试

阅读更多
tesng教程:https://www.yiibai.com/testng
1、依靠group分组忽略某些方法执行
       testNG通过group属性实现分组,然后在testng.xml中通过<groups>标签指定哪个组的方法运行,哪个不运行。分为方法分组和类分组,下面用代码示例说明。
       方法分组:
       <code="java">
       package com.test.groups;
       import org.testng.annotations.Test;
       public class GroupsOnMethod {
             @Test(groups = "server")
             public void serverTest1() {
                   System.out.println("这是服务端组测试方法1");
             }

             @Test(groups = "server")
             public void serverTest2() {
                  System.out.println("这是服务端组测试方法2");
             }

             @Test(groups = "client")
             public void clientTest1() {
                  System.out.println("这是客户端组测试方法1111");
             }

            @Test(groups = "client")
            public void clientTest2() {
                  System.out.println("这是客户端组测试方法2222");
            }

            @Test(groups = "thirdParty")
            public void thirdPartyTest1() {
                 System.out.println("这是第三方组测试方法1111");
            }

            @Test(groups = "thirdParty")
            public void thirdPartyTest2() {
                  System.out.println("这是第三方组测试方法2222");
            }
       }
       </code>
       类分组:
       <code="java">
       package com.test.groups;
       import org.testng.annotations.Test;

       @Test(groups = "stu")
       public class GroupsOnClass1 {
             public void stu1() {
                   System.out.println("GroupsOnClass1中的stu1运行!");
             }
             public void stu2() {
                  System.out.println("GroupsOnClass1中的stu2运行!");
             }
       }
       </code>
       <code="java">
       package com.test.groups;
       import org.testng.annotations.Test;

       @Test(groups = "stu")
       public class GroupsOnClass2 {
             public void stu1() {
                   System.out.println("GroupsOnClass2中的stu1运行!");
             }
             public void stu2() {
                  System.out.println("GroupsOnClass2中的stu2运行!");
             }
       }
       </code>
       <code="java">
       package com.test.groups;
       import org.testng.annotations.Test;

       @Test(groups = "teacher")
       public class GroupsOnClass3 {
             public void teacher1() {
                   System.out.println("GroupsOnClass3中的teacher1运行!");
             }
             public void teacher2() {
                  System.out.println("GroupsOnClass3中的teacher2运行!");
             }
       }
       </code>
      在testng.xml中如下配置:
      <code="java">
      <?xml version="1.0" encoding="utf-8" ?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
      <suite name="groupSuite" preserve-order="true">
          <test name="groupOnMethodTest">
              <groups>
                  <run>
                      <!-- 不包含某个分组 -->
                      <exclude name="client"/>
                 </run>
             </groups>
             <classes>
                 <class name="com.janson.groups.GroupsOnMethod"/>
             </classes>
          </test>
         <test name="groupOnClassTest">
             <groups>
                 <run>
                     <!-- 包含某个分组 -->
                     <include name="teacher"/>
                </run>
            </groups>
            <classes>
                <class name="com.janson.groups.GroupsOnClass1"/>
                <class name="com.janson.groups.GroupsOnClass2"/>
                <class name="com.janson.groups.GroupsOnClass3"/>
            </classes>
         </test>
      </suite>
      </code>

      执行结果如下:
      这是服务端组测试方法1
      这是服务端组测试方法2
      这是第三方组测试方法1111
      这是第三方组测试方法2222
      GroupsOnClass3中的teacher1运行!
      GroupsOnClass3中的teacher2运行!
2、通过enabled参数忽略某些方法
       有时候某些测试方法暂时不需要执行,但是又不想删除代码,可能以后又需要执行,这时怎么办呢,我们可以使用testNG的忽略测试,就是在@Test中设置enabled属性为false,示例代码如下:
       <code="java">
       public class IgnoreTest {
             @Test(enabled = false)
             public void ignore1() {
                   System.out.println("ignore1 运行!");
             }

             @Test //默认是不忽略的
             public void ignore2() {
                   System.out.println("ignore2 运行!");
              }

             @Test(enabled = true)
             public void ignore3() {
                   System.out.println("ignore3 运行!");
             }
       }
       </code>
      执行结果如下:
            ignore2 运行!
            ignore3 运行!

3、通过groups设置依赖关系:
       有时候某个测试方法要等其他某个测试方法执行完才能执行,可以使用dependsOnMethods指定要依赖的测试方法,这个只能用在某个类里面,指定依赖本类中的方法,而当需要依赖其他类的方法时,可以通过dependsOnGroups,代码如下:
<code="java">
package com.propertiesfile;
import org.testng.annotations.Test;
public class WaybillSelect {
@Test(groups= "one")
public void test1() {
System.out.println("this is test1");
}
@Test(groups= "one")
public void tester1() {
System.out.println("this is tester1");
}
@Test
public void test2() {
System.out.println("this is test2");
}

}

package com.moneyselect;
import org.testng.annotations.*;

public class MoneySelectTest {

@Test
public void test1() {
System.out.println("this is moneyselect.test1 method");
}
@Test//(dependsOnGroups= {"one"})
public void beforesuitetest() {
         System.out.println("this is beforesuite test");
}
@Test
public void beforetest() {
System.out.println("this is beforetest  test");
}
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="zhanglutest" verbose="2" parallel="classes" >
    <test name="testcase1">
    <classes>
   
    <class name="com.propertiesfile.WaybillSelect"></class>
            <class name="com.moneyselect.MoneySelectTest"></class>
           
        </classes>
    </test>
</suite>
</code>
       运行结果如下,如果不加依赖,因为设置了parallel="classes",所以两个类会在两个线程中按照各自的方法名字典升序排序运行,MoneySelectTest类中的方法顺序应该是beforesuitetest()、beforetest()、test1(),因为现在制定了beforesuitetest()要等待组名为one的组中的方法执行完后再执行,所以执行结果如下。
this is beforetest  test
this is test1
this is tester1
this is moneyselect.test1 method
this is beforesuite test
this is test2
       从上面的结果可以看出,添加了groups依赖后,WaybillSelect中的几个方法不是按照方法名字典顺序执行,而是先执行了设置了groups参数的方法,再执行没有该参数的方法,这个是为什么没有找到原因,难道是和依赖该group的方法有关?另外如果设置了多个groups,各个groups方法的执行顺序是怎样的也有待研究。
分享到:
评论

相关推荐

    testNG单元测试学习总结

    以上内容概述了TestNG的基本概念、特点以及如何进行套件测试、分组测试、依赖测试、超时测试和忽略测试。TestNG提供了一种强大而灵活的方式来编写和管理自动化测试,非常适合用于各种规模的软件开发项目。

    testng 5.12.1

    10. **分组测试(Grouping Tests)**:通过定义测试分组,你可以按需运行特定的测试集合,这对于大型项目中的模块化测试非常有用。 JUnit是一个早期且广泛使用的Java测试框架,虽然它也很强大,但在某些高级特性上...

    TestNG.pdf

    2. **灵活的测试配置**:通过 `testng.xml` 文件,可以非常灵活地配置测试环境,包括指定哪些测试方法应该运行、哪些应该被忽略等。 3. **数据驱动测试**:TestNG 支持使用 `@DataProvider` 注解来为测试方法提供...

    TestNG官方文档中文版.pdf

    2. **分组测试(Groups)** 测试可以被分配到不同的组中,这使得我们可以根据需要运行特定的测试组,比如只运行集成测试或者回归测试,而忽略其他组的测试。 3. **依赖测试(Dependencies)** TestNG支持测试方法...

    软件测试与Junit实践__0

    - **TestNG**:虽然Junit功能强大,但TestNG提供了更高级的特性,如并发测试、测试分组和灵活的测试配置。 - **持续集成工具**:如Jenkins、Travis CI等,可以自动化执行Junit测试,持续监控代码质量。 在实际项目...

    selenium-webdriver-java-testng

    4. **测试套件与分组**:TestNG允许创建测试套件,将相关测试组织在一起,支持分组和依赖关系管理。 5. **并行测试**:TestNG支持并发执行测试用例,提高测试效率。 6. **异常处理**:捕获和处理测试过程中可能出现...

    单元测试单元测试单元测试单元测试单元测试单元测试单元测试

    TestNG则提供了更丰富的功能,如支持并行测试、测试分组和报告等。 3. 测试驱动开发(TDD):单元测试常常与TDD相结合,即先编写测试用例,再编写实现代码,确保代码一开始就满足需求,并且持续通过所有测试。 4. ...

    seleniumFramework:使用Java,Maven,TestNG和POM的selenium Framework项目

    **TestNG** 是一个灵活且功能强大的测试框架,比JUnit更强大,支持并发测试、分组测试、配置方法等功能。在本框架中,TestNG被用来组织和执行测试用例,提供详细的测试结果和报告。 **Page Object Model (POM)** ...

    框架Selenium测试NG

    2. **测试套件配置文件**(testng.xml):定义了测试的结构和执行顺序,包括如何组织测试类、分组测试以及并行执行的设置。 3. **资源文件**:可能包含测试过程中需要的任何外部文件,如数据驱动测试的数据文件。 ...

    TestNGProject

    4. **分组(Group)**:TestNG支持测试分组,通过`@Groups`注解,我们可以将测试方法归类到不同的组,便于按需执行特定组的测试。 5. **参数化(Parameterization)**:TestNG允许我们为测试方法传递参数,这在进行数据...

    testNGFramework

    - **测试分组**:通过分组,可以对测试进行分类,便于选择性运行或忽略某些测试。 - **异常处理**:TestNG允许指定预期异常,如果方法未抛出预期的异常,测试将失败。 - **报告生成**:内置了详细的测试报告,...

    康塔尼亚测试

    TestNG则提供了更高级的功能,如并行测试、测试分组和更灵活的测试配置,为大型项目提供更好的支持。康塔尼亚测试可能是在这些框架基础上的一种特定实践或者扩展。 在【压缩包子文件的文件名称列表】中看到的...

    SelenuimFrameWork

    在 Selenium 中结合使用 TestNG,我们可以创建更复杂和灵活的测试套件,支持分组测试、测试优先级和依赖,以及详细的测试报告。 **HTML** HTML(超文本标记语言)是网页内容的基础结构语言。在自动化测试中,特别...

    AutomationPractice

    2. TestNG:相较于JUnit,TestNG提供了更高级的特性,如并发测试、参数化测试、分组测试和灵活的报告。它允许开发人员并行运行测试,提高了测试效率。结合Selenium,TestNG可以实现功能强大的Web自动化测试套件。 3...

    SeleniumMavenPOM1

    5. **testng.xml**(或类似的文件):TestNG的测试套件配置文件,定义了测试的执行顺序和分组。 6. **README.md**:项目的说明文件,可能会包含如何构建、运行测试和解释结果的指南。 项目可能还包含其他的脚本或...

    jTester使用指南(带书签).pdf

    **2.4 TestNG 分组测试和 suite 文件编写** - **分组测试**:通过 `@Test(groups = {"group1", "group2"})` 来标记测试方法属于哪个组。 - **suite 文件**:可以在 `testng.xml` 文件中指定哪些测试类或方法属于特定...

Global site tag (gtag.js) - Google Analytics