当前位置:首页 > 技术 > 正文内容

TestNG XML 配置详解与实践示例

访客 技术 2026年6月12日 1

TestNG XML 文件结构解析

TestNG 框架通过 testng.xml 文件实现灵活的测试套件配置。该文件遵循特定 DTD 规范,可定义测试执行的范围、顺序、并发策略及参数化设置。完整的配置参考如下:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="MySuite" parallel="classes" thread-count="5" configfailurepolicy="skip">

  <!-- 引入其他 suite 文件 -->
  <suite-files>
    <suite-file path="integration-tests.xml"/>
    <suite-file path="unit-tests.xml"/>
  </suite-files>

  <!-- 全局参数设置 -->
  <parameter name="env" value="staging"/>
  <parameter name="browser" value="chrome"/>

  <!-- 方法选择器:支持自定义过滤逻辑 -->
  <method-selectors>
    <method-selector>
      <selector-class name="com.example.CustomMethodSelector" priority="2"/>
    </method-selector>
  </method-selectors>

  <!-- 测试用例分组定义 -->
  <test name="RegressionTest" enabled="true" preserve-order="false">
    
    <!-- 局部参数覆盖全局参数 -->
    <parameter name="timeout" value="60000"/>

    <groups>
      <define name="smoke">
        <include name="login"/>
        <include name="dashboard"/>
      </define>

      <run>
        <include name="smoke"/>
        <exclude name="performance"/>
      </run>

      <dependencies>
        <group name="e2e" depends-on="setup"/>
      </dependencies>
    </groups>

    <!-- 指定要执行的测试类及其方法 -->
    <classes>
      <class name="com.example.LoginTests">
        <methods>
          <include name="validLogin"/>
          <include name="invalidCredentials"/>
        </methods>
      </class>

      <class name="com.example.DashboardTests">
        <methods>
          <include name="loadOverviewPage"/>
          <exclude name="exportLargeReport"/>
        </methods>
      </class>
    </classes>

    <!-- 监听器注册 -->
    <listeners>
      <listener class-name="com.example.ReportListener"/>
      <listener class-name="com.example.RetryAnalyzer"/>
    </listeners>
  </test>
</suite>

关键节点属性说明

suite 标签属性

  • name: 套件名称,必填项。
  • parallel: 并行模式,支持 false, methods, tests, classes, instances
  • thread-count: 线程池大小,默认为 5。
  • configfailurepolicy: 配置方法失败后的行为,skip(跳过)或 continue(继续)。
  • time-out: 设置方法级超时时间(毫秒)。
  • data-provider-thread-count: DataProvider 并发线程数,默认 10。
  • object-factory: 自定义对象工厂类,用于实例化测试类。
  • allow-return-values: 是否允许测试方法返回值,默认 false。

test 标签属性

  • name: 测试块名称,报告中可见。
  • enabled: 是否启用当前测试块,可用于临时禁用。
  • preserve-order: 是否保持 XML 中声明的方法顺序执行。
  • verbose: 控制台输出详细程度,取值 1~5。

groups 分组机制

支持动态定义和运行测试组,提升测试组织灵活性:

  • <define>: 定义命名组并包含指定方法。
  • <run>: 指定本次运行包含或排除的组。
  • <dependencies>: 设置组之间的依赖关系。

实际应用示例

以下是一个典型的功能回归测试配置:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Functional Suite" parallel="classes" thread-count="3">

  <test name="Smoke Regression">
    <parameter name="base.url" value="https://api.example.com"/>

    <groups>
      <run>
        <include name="smoke"/>
      </run>
    </groups>

    <classes>
      <class name="com.tests.auth.LoginFlowTest"/>
      <class name="com.tests.order.CreateOrderTest">
        <methods>
          <include name="placeNewOrder"/>
          <include name="verifyOrderStatus"/>
        </methods>
      </class>
    </classes>
  </test>
</suite>

此配置将以类级别并行方式运行标记为 "smoke" 的测试,并限制最多使用 3 个线程。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。