TestNG学习-测试用例结果展示

简介: TestNG学习-测试用例结果展示

1. 成功、失败和断言

   成功:如果测试完成而没有引发任何异常,或者引发了预期的异常,则该测试用例被视为成功。

   失败:测试用例通常由可能引发异常的调用或各种断言(使用Java“ assert”关键字)组成。“断言”失败将触发AssertionErrorException,进而将方法标记为失败(如果未看到断言错误,在JVM上使用-ea设置来查看)。

   测试用例断言的示例如下:

@Test
public void verifyLastName() {
  assert "Beust".equals(m_lastName) : "Expected name Beust, for" + m_lastName;
}

   TestNG还支持JUnit的Assert类,可以对复杂对象执行断言:

import static org.testng.AssertJUnit.*;
//...
@Test
public void verify() {
  assertEquals("Beust", m_lastName);
}

   以上代码使用静态导入来使用assertEquals方法,不必在类之前添加前缀使用。


2. 结果记录

   测试运行的结果在启动SuiteRunner时指定的目录中的index.html文件中创建。该文件包含整个测试运行结果的各种其他HTML和文本文件的总体展示情况。

   使用TestNG与监听器(Listeners)和报告器(reporters)可以方便的生成自己的报告:

  • Listeners实现org.testng.ITestListener接口,并在测试开始,通过,失败等时实时通知。
  • reporters实现org.testng.IReporter接口,并在TestNG运行完所有suite时通知。IReporter实例接收描述整个测试运行的对象列表。

   具体使用场景:

  • 如果要生成测试运行的PDF报告,不需要实时通知测试运行情况,应该使用IReporter。
  • 如果想编写测试的实时报告,例如带有进度条的GUI等,则使用ITestListener。

   1)Listeners的示例

public class DotTestListener extends TestListenerAdapter {
  private int m_count = 0;
  @Override
  public void onTestFailure(ITestResult tr) {
    log("F");
  }
  @Override
  public void onTestSkipped(ITestResult tr) {
    log("S");
  }
  @Override
  public void onTestSuccess(ITestResult tr) {
    log(".");
  }
  private void log(String string) {
    System.out.print(string);
    if (++m_count % 40 == 0) {
      System.out.println("");
    }
  }
}

   其中“.”表示测试用例通过,F表示失败,S表示pass。可以根据需要自定义。

   java命令行执行:

java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -listener org.testng.reporters.DotTestListener test\testng.xml

   输出示例:

........................................
........................................
........................................
........................................
........................................
.........................
===============================================
TestNG JDK 1.8
Total tests run: 226, Failures: 0, Skips: 0
===============================================

   注:当使用-listener时,TestNG会自动确定要使用的监听器的类型。

   2)reporters使用

   org.testng.IReporter接口只有一个方法:

public void generateReport(List<ISuite> suites, String outputDirectory)

   当所有suites都已运行完成时,TestNG将调用此方法。


3. JunitReports

   TestNG包含一个可以获取TestNG结果并输出一个XML文件的监听器,然后可以将结果送到JUnitReport。 示例如下,可以通过ant任务创建report:

<target name="reports">
  <junitreport todir="test-report">
    <fileset dir="test-output">
      <include name="*/*.xml"/>
    </fileset>
    <report format="noframes"  todir="test-report"/>
  </junitreport>
</target>

   注:JDK 1.5和JUnitReports不兼容,需要指定“ noframes”使用。


4. Reporter API

   如果需要记录在生成的HTML报告中显示的消息,则可以使用org.testng.Reporter类。


5. XML Reports

   TestNG提供了XML reporter,用于捕获JUnit报告中不支持的TestNG的特定信息。当用户的测试环境需要使用具有TestNG特定信息的XML结果时,这个功能特别有用。可以使用-reporter通过命令行将该reporter注入TestNG。

   示例用法:

 -reporter org.testng.reporters.XMLReporter:generateTestResultAttributes=true,generateGroupsAttribute=true.

   下面是报告使用示例:

<testng-results>
  <suite name="Suite1">
    <groups>
      <group name="group1">
        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
        <method signature="com.test.TestOne.test1()" name="test1" class="com.test.TestOne"/>
      </group>
      <group name="group2">
        <method signature="com.test.TestOne.test2()" name="test2" class="com.test.TestOne"/>
      </group>
    </groups>
    <test name="test1">
      <class name="com.test.TestOne">
        <test-method status="FAIL" signature="test1()" name="test1" duration-ms="0"
              started-at="2007-05-28T12:14:37Z" description="someDescription2"
              finished-at="2007-05-28T12:14:37Z">
          <exception class="java.lang.AssertionError">
            <short-stacktrace>
              <![CDATA[
                java.lang.AssertionError
                ... Removed 22 stack frames
              ]]>
            </short-stacktrace>
          </exception>
        </test-method>
        <test-method status="PASS" signature="test2()" name="test2" duration-ms="0"
              started-at="2007-05-28T12:14:37Z" description="someDescription1"
              finished-at="2007-05-28T12:14:37Z">
        </test-method>
        <test-method status="PASS" signature="setUp()" name="setUp" is-config="true" duration-ms="15"
              started-at="2007-05-28T12:14:37Z" finished-at="2007-05-28T12:14:37Z">
        </test-method>
      </class>
    </test>
  </suite>
</testng-results>

6. TestNG退出码

   当TestNG完成执行时,它将退出并返回一个代码。可以检查此返回码以了解故障的性质(如果有的话)。下表总结了TestNG当前使用的不同退出代码。

FailedWithinSuccess

Skipped

Failed

Status Code

Remarks

No

No

No

0

Passed tests

No

No

Yes

1

Failed tests

No

Yes

No

2

Skipped tests

No

Yes

Yes

3

Skipped/Failed tests

Yes

No

No

4

FailedWithinSuccess tests

Yes

No

Yes

5

FailedWithinSuccess/Failed tests

Yes

Yes

No

6

FailedWithinSuccess/Skipped tests

Yes

Yes

Yes

7

FailedWithinSuccess/Skipped/Failed tests

   欢迎关注交流~

相关文章
|
2月前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
【6月更文挑战第21天】本文介绍了TestNG中测试方法的依赖执行顺序。作者通过一个实际的自动化测试场景展示了如何设计测试用例:依次打开百度、搜索“selenium”、再搜索“selenium+java”。代码示例中,`@Test`注解的`dependsOnMethods`属性用于指定方法间的依赖,确保执行顺序。如果不设置依赖,TestNG会按方法名首字母排序执行。通过运行代码,验证了依赖关系的正确性。
48 4
|
1月前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
37 6
|
2月前
|
Java 测试技术 Python
《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
【6月更文挑战第22天】本文介绍了如何在TestNG中不执行特定测试用例。当部分模块未准备好时,可以通过以下方式暂停测试:③使用`@Test(enabled=false)`注解来禁用测试用例。作者提供了一个Java Selenium自动化测试的示例,展示如何通过修改`enabled`参数控制测试方法的执行。代码中,`testSearch2()`方法被禁用,因此在测试运行时不执行。文章还包含了测试报告和执行过程的截图。
45 7
|
2月前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十九)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-下篇(详解教程)
【6月更文挑战第20天】TestNG是一个Java测试框架,提供两种测试方法依赖机制:强依赖(所有前置方法成功后才运行)和弱依赖(即使前置方法失败,后置方法仍运行)。文中通过代码示例展示了这两种依赖如何实现,并解释了当依赖方法失败时,如何影响后续方法的执行。文章还包含了TestNG Suite的运行结果截图来辅助说明。
40 8
|
2月前
|
XML Java 测试技术
《手把手教你》系列基础篇(八十二)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-上篇(详解教程)
【6月更文挑战第23天】TestNG 是一个用于自动化测试的 Java 框架,它自动生成测试报告,包括 HTML 和 XML 格式。报告可在 `test-output` 文件夹中找到。要创建测试用例,可创建一个实现了 `@Test` 注解的方法。通过 `testng.xml` 配置文件来组织和执行测试。默认报告包括测试结果、失败点和原因。用户还能实现 `ITestListener` 和 `IReporter` 接口来自定义报告和记录器。
35 2
|
2月前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)
【6月更文挑战第18天】TestNG是一个Java测试框架,它允许在测试方法间定义执行顺序和依赖关系。当不指定依赖时,TestNG默认按方法名首字母排序执行。`@Test`注解的`dependsOnMethods`属性用于指定方法依赖,如`test1`依赖`test4`,则实际执行顺序为`test4`、`test2`、`test3`、`test1`。如果依赖的方法失败,后续依赖的方法将被跳过。此外,`dependsOnGroups`属性通过组名指定依赖,方便管理多个相关测试方法。通过`groups`定义方法所属组,然后在其他方法中用`dependsOnGroups`引用这些组。
32 5
|
2月前
|
XML Web App开发 测试技术
《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
【6月更文挑战第19天】本文介绍了使用TestNG框架配置XML文件来管理测试用例的分组和依赖关系。
78 2
|
2月前
|
Web App开发 XML 安全
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
【6月更文挑战第14天】本文介绍了如何使用TestNg进行自动化测试,特别是通过变量参数启动不同浏览器的步骤。
31 5
|
2月前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
【6月更文挑战第16天】本文介绍了TestNG中`@DataProvider`的两种使用方法。本文通过实例展示了TestNG如何利用`@DataProvider`结合方法名和`ITestContext`来灵活地为测试方法传递参数。
26 1
|
2月前
|
监控 Java 测试技术
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
【6月更文挑战第13天】本文介绍了TestNG单元测试框架,它是一个灵感来源于JUnit和NUnit的测试框架,支持多种级别的测试,如单元测试、集成测试等。TestNG的特点包括丰富的注解、数据驱动测试、变量支持、自动生成HTML测试报告等。与JUnit和NUnit相比,TestNG在某些功能上更为强大。文章还详细讲解了如何在Eclipse中安装TestNG插件,提供了在线安装、更新站点安装和离线安装三种方法,并展示了安装成功的验证步骤。最后,通过一个项目实战案例展示了如何使用TestNG编写和运行测试代码。
32 2