testng.xml

一、TestNG.xml 是 TestNG 測試框架的核心配置文件,用于組織和控制測試執行。通過它,可以靈活地管理測試套件、測試類、方法,并設置各種執行參數

一個基本的 testng.xml文件通常以 ??DOCTYPE 聲明??開頭,并遵循特定的文檔類型定義(DTD)
一個基本的 TestNG.xml 結構如下

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="SuiteName"><test name="TestName"><classes><class name="com.example.TestClass1"/><class name="com.example.TestClass2"/></classes></test>
</suite>

二、 下面詳細解釋其主要結構和用法。

2.1 < suite >

根標簽,代表一個測試套件。可設置 name(套件名,必填)、parallel(并行模式,如 none/methods/tests/classes)、thread-count(線程數)等屬性

name?? (必填): 套件或測試的名稱,會顯示在報告中
??verbose??: 控制臺輸出的詳細等級,0-10,數字越大越詳細。
??parallel??: 指定并行模式,TestNG 7.0+版本默認parallel=“none”(即false)、methods、tests、classes、instances。??必須??與 thread-count配套使用。
??thread-count??: 并行執行時的最大線程數。
??data-provider-thread-count??: 并發時數據提供者的線程池大小。
??preserve-order??: 是否按 XML 中的順序執行測試,默認為 true。

<suite name="MyTestSuite" verbose="1" parallel="tests" thread-count="3" data-provider-thread-count="10"><test name="RegressionTest1"><!-- 配置內容 --></test><test name="SmokeTest"><!-- 配置內容 --></test>
</suite>

2.2 < test>

定義測試模塊,包含具體的測試類或包
name(必填): 測試的名稱。
同樣可以設置 parallel, thread-count等屬性,其設置會覆蓋 suite 級別的同名屬性

<test name="Example"><classes><class name="com.example.TestClass1"><methods><include name="testMethod1"/> <!-- 只運行 testMethod1 --><exclude name="testMethod2"/> <!-- 排除 testMethod2 --></methods></class><class name="com.example.TestClass2"/> <!-- 運行 TestClass2 中的所有測試方法 --></classes><!-- 或者使用 packages --><packages><package name="com.example.integrationtests"/> <!-- 運行指定包及其子包下所有測試類 --></packages>
</test>

2.3< parameter>

??用于定義參數,這些參數可以通過 @Parameters注解在測試類中獲取。可以聲明在 < suite>或 < test>級別,test 級別的參數會覆蓋 suite 級別的同名參數。

<suite name="ParameterSuite"><parameter name="env" value="staging"/> <!-- suite級別參數 --><test name="ParameterTest"><parameter name="username" value="testuser"/> <!-- test級別參數 --><classes><class name="com.example.LoginTest"/></classes></test>
</suite>

在測試類中:

public class LoginTest {@Test@Parameters({"env", "username"})public void testLogin(String environment, String user) {// 使用參數進行測試System.out.println("Running in env: " + environment + " with user: " + user);}
}

2.4< groups>

用于定義要運行或排除的測試組
位于 < test>標簽下。使用 < run>, < include>, < exclude>來精細控制哪些組的測試方法需要執行
還可以使用 < define>來組合已有的組,形成新的邏輯組

<test name="GroupTest"><groups><define name="all"> <!-- 定義一個新的組組合 --><include name="smoke"/><include name="regression"/></define><run><include name="all"/> <!-- 運行自定義的組組合 --><exclude name="broken"/> <!-- 排除標記為broken的測試 --></run><!-- 還可以定義組依賴 --><dependencies><group name="final-test" depends-on="smoke regression"/></dependencies></groups><classes><class name="com.example.*"/> <!-- 運行指定包下所有類的測試 --></classes>
</test>

2.5< classes>

< classes>用于指定具體的類,還可以在類下通過 < methods>元素包含或排除特定方法。

<suite name="ParallelSuite" parallel="classes" thread-count="5">
<!-- parallel="methods": 所有測試方法在不同線程并行執行 -->
<!-- parallel="tests": 不同<test>下的方法在不同線程執行 -->
<!-- parallel="classes": 不同<class>下的方法在不同線程執行 -->
<!-- parallel="instances": 相同實例的方法在不同線程執行 --><test name="ParallelTest"><classes><class name="com.example.TestClass1"/><class name="com.example.TestClass2"/></classes></test>
</suite>

2.6< packages>

< packages>用于指定整個包,TestNG會自動掃描該包下所有帶有TestNG注解的類。

<test name="Example"><classes><class name="com.example.TestClass1"><methods><include name="testMethod1"/> <!-- 只運行 testMethod1 --><exclude name="testMethod2"/> <!-- 排除 testMethod2 --></methods></class><class name="com.example.TestClass2"/> <!-- 運行 TestClass2 中的所有測試方法 --></classes><!-- 或者使用 packages --><packages><package name="com.example.integrationtests"/> <!-- 運行指定包及其子包下所有測試類 --></packages>
</test>

2.7< methods>

??在類中指定要包含或排除的具體方法

2.8< listeners>

用于配置監聽器,這些監聽器可以監聽測試執行過程中的各種事件(如測試開始、結束、失敗等),用于擴展測試行為,如生成自定義報告

<suite name="ListenerSuite"><listeners><listener class-name="com.example.myutil.MyTestListener"/> <!-- 自定義監聽器 --></listeners><test name="TestWithListener"><classes>...</classes></test>
</suite>

三、這是一個綜合了多種元素的 testng.xml示例:

3.1

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ComprehensiveSuite" parallel="tests" thread-count="3" verbose="2"><parameter name="env" value="staging" /> <!-- Suite level parameter --><test name="SmokeTest" preserve-order="true"><parameter name="browser" value="chrome" /> <!-- Test level parameter, overrides suite level if same name --><groups><run><include name="smoke"/><exclude name="broken"/></run></groups><classes><class name="com.example.tests.LoginTest"><methods><include name="testValidLogin"/><exclude name="testInvalidLogin"/></methods></class><class name="com.example.tests.HomePageTest"/></classes></test><test name="RegressionTest"><packages><package name="com.example.regression.*"/></packages></test><listeners><listener class-name="com.example.listeners.MyTestListener"/></listeners>
</suite>

3.2

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="ECommerce_Regression_Suite" verbose="2" parallel="tests" thread-count="3" data-provider-thread-count="2"><!-- 全局參數 --><parameter name="env" value="staging"/><parameter name="browser" value="chrome"/><parameter name="timeout" value="30"/><!-- 監聽器配置 --><listeners><listener class-name="com.qa.listeners.ExtentReportListener"/><listener class-name="com.qa.listeners.TestListener"/></listeners><!-- 冒煙測試套件 --><test name="Smoke_Test" preserve-order="true"><groups><run><include name="smoke"/><exclude name="broken"/> <!-- 排除標記為broken的測試 --></run></groups><classes><class name="com.qa.tests.LoginTest"/><class name="com.qa.tests.SearchTest"/><class name="com.qa.tests.CartTest"/></classes></test><!-- 登錄模塊測試 - 并行執行 --><test name="Login_Module_Tests" parallel="methods" thread-count="2"><parameter name="browser" value="firefox"/> <!-- 覆蓋全局參數 --><classes><class name="com.qa.tests.LoginTest"><methods><include name="testValidLogin"/><include name="testInvalidLogin"/><exclude name="testExpiredPassword"/> <!-- 排除特定方法 --></methods></class><class name="com.qa.tests.RegistrationTest"/></classes></test><!-- 支付流程測試 - 按包運行 --><test name="Payment_Flow_Tests"><groups><run><include name="payment"/><include name="p1"/> <!-- 包含多個組 --></run></groups><packages><package name="com.qa.tests.payment.*"/> <!-- 運行包內所有測試類 --></packages></test><!-- API測試套件 --><test name="API_Tests" enabled="true"> <!-- enabled可控制是否執行此test --><parameter name="base_url" value="https://api.ecommerce.com/v1"/><classes><class name="com.qa.api.tests.UserAPITest"/><class name="com.qa.api.tests.ProductAPITest"/><class name="com.qa.api.tests.OrderAPITest"/></classes></test></suite>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96092.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

上架商品合規流程有多條,有的長,有的短,有的需要審核,校驗商品的合規性

博主介紹&#xff1a;?全網粉絲5W&#xff0c;全棧開發工程師&#xff0c;從事多年軟件開發&#xff0c;在大廠呆過。持有軟件中級、六級等證書。可提供微服務項目搭建與畢業項目實戰&#xff0c;博主也曾寫過優秀論文&#xff0c;查重率極低&#xff0c;在這方面有豐富的經驗…

[嵌入式][stm32h743iit6] 野火繁星stm32h743iit6開發板使用學習記錄

[嵌入式][stm32h743iit6] 野火繁星stm32h743iit6開發板使用學習記錄野火繁星STM32H743IIT6開發板使用學習速記問題描述嘗試解決野火繁星STM32H743IIT6開發板使用學習速記 問題描述 在使用該開發板學習stm32hal庫pwm開發時, 偶遇代碼無法驅動sg90舵機進行旋轉, 無論占空比設置…

Android 熱點開發的相關api總結

Android 熱點 一、前言熱點開發屬于系統級功能開發&#xff0c;涉及的核心 API 多為系統簽名權限保護&#xff08;如android.permission.TETHER_PRIVILEGED&#xff09;&#xff0c;通常僅系統應用&#xff08;如 Settings&#xff09;可正常調用。 實際開發中&#xff0c;除基…

Claude Code 使用指南

Claude Code 使用指南 在 AI 輔助編程領域&#xff0c;我們正經歷從簡單的代碼補全到能夠自主執行復雜任務的“智能體”&#xff08;Agent&#xff09;的深刻變革。Claude Code 正是這一變革的杰出代表。它并非一個簡單的問答機器人&#xff0c;而是一個設計精密的編程協作系統…

Spring Boot常用注解-詳細解析+示例

1. SpringBootApplication詳細解析&#xff1a;組合注解&#xff0c;包含Configuration&#xff08;標記配置類&#xff09;、EnableAutoConfiguration&#xff08;開啟自動配置&#xff09;、ComponentScan&#xff08;組件掃描&#xff09;。啟動類標注后&#xff0c;Spring …

基于原神游戲物品系統小demo制作思路

概述 本文介紹了一個基于C的游戲物品與角色管理系統&#xff0c;該系統實現了游戲中的物品分類、角色屬性管理、隊伍組建以及背包物品使用等功能。該系統采用面向對象的設計原則&#xff0c;通過繼承和多態實現了可擴展的物品效果系統。 系統架構 1. 物品類型系統 系統定義了三…

Grounded-Segment-Anything 環境配置

Grounded-Segment-Anything 環境配置Grounded-Segment-Anything 介紹環境配置Install osx&#xff08;非必須&#xff09;:Install RAM & Tag2Text:報錯 module ‘pkgutil‘ has no attribute ‘ImpImporter‘. Did you mean: ‘zipimporter‘?運行輸出分割文本提示檢測遠…

ZYNQ 定時器

一、ZYNQ定時器簡介 每個Cortex-A9處理器都有自己的專用32位定時器和32位看門狗定時器。兩個處理器共享一個全局64位定時器。這些計時器的時鐘始終為CPU頻率&#xff08;CPU_3x2x&#xff09;的1/2。在系統級&#xff0c;有一個24位看門狗定時器和兩個16位三重定時器/計數器。系…

Java8 Comparator接口 和 List Steam 排序使用案例

在Java中&#xff0c;Comparator接口主要用于實現自定義排序邏輯&#xff0c;適用于未實現Comparable接口或需要覆蓋默認比較規則的場景。以下是核心使用方法和注意事項&#xff1a;一、基礎用法?匿名內部類實現?傳統方式通過匿名內部類重寫compare()方法&#xff0c;例如對整…

word2vec模型案例

代碼實現&#xff1a;import torch.optim as optim from tqdm import tqdm, trange import numpy as np import torch from torch import nn import torch.nn.functional as FCONTEXT_SIZE 2raw_text """We are about to study the idea of a computational p…

< 自用文 OS 有關 > (續)發現正在被攻擊 后的自救 Fail2ban + IPset + UFW 工作流程詳解

繼上編&#xff1a;&#xff1c; 自用文 主機 USC 記錄&#xff1a;&#xff1e; 發現正在被攻擊 后的自救-CSDN博客 環境&#xff1a; 改進&#xff1a; 以下是把代碼&#xff0c;懶得寫&#xff0c;扔給了 AI &#xff0c;讓它出的&#xff1a; Fail2ban IPset UFW 工作…

Linux —— 虛擬進程地址空間

&#x1f381;個人主頁&#xff1a;工藤新一 &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄虛…

簡單聊一聊js

JavaScript 是一種高級的、解釋型的編程語言。它是現代 Web 開發的三大核心基石之一&#xff0c;與 HTML 和 CSS 并列。?HTML?&#xff1a;負責網頁的結構和內容?&#xff08;如標題、段落、圖片&#xff09;。?CSS?&#xff1a;負責網頁的樣式和布局?&#xff08;如顏色…

造粒機cad+設計說明書

摘要 隨著現代化工業的快速發展&#xff0c;生產出大量的固體廢棄物。這些廢棄物對環境造成了很大的污染&#xff0c;因此需要采取有效的措施進行處理。機械強壓式造粒機就是一種非常有效的處理工具&#xff0c;它可以將廢渣、廢料、飼料和化肥等材料通過機械強力擠壓&#xff…

第五課 C#語言基本元素概覽,初始類型,變量與方法,算法簡介

熟悉C#語言要求&#xff1a;對構成C#語言的基本元素&#xff0c;隨便拿出一個你都認識&#xff0c;對于常見基本元素&#xff0c;都能正確使用它 精通C#語言要求&#xff1a;對于構成C#語言的基本元素&#xff0c;隨便拿出一個都會使用&#xff0c;對于常用基本元素&#xff0…

LLM學習:大模型基礎——視覺大模型以及autodl使用

1、常見的VLM 在大模型中,VLM 是視覺語言模型(Vision-Language Model)的縮寫,是一種多模態、生成式 AI 模型,能夠理解和處理視頻、圖像和文本。 VLM 通過將大語言模型(LLM)與視覺編碼器相結合構建而成,使 LLM 具有 “看” 的能力,從而可以處理并提供對提示中的…

Vue—路由配置中設置了meta.title,但頁面標題仍然顯示為“Vite App“?【讓我來看看~】

路由配置中明明設置了meta.title&#xff0c;但是頁面標題仍然顯示為"Vite App"&#xff1f;這是因為僅僅在路由配置中設置meta.title是不夠的&#xff0c;還需要在路由守衛中動態設置頁面標題。需要做以下幾件事來正確設置頁面標題&#xff1a;1.首先更新HTML文件的…

【機器學習】綜合實訓(二)

項目五 電影評分預測【教學內容】使用 MovieLens 數據集&#xff0c;訓練一個模型預測用戶對電影的評分。主要有以下幾個知識點&#xff1a;&#xff08;1&#xff09;數據加載與探索性分析&#xff08;EDA&#xff09;。&#xff08;2&#xff09;處理稀疏數據&#xff08;如用…

STM32 UART + DMA + 空閑中斷使用中的幀錯誤(FE)問題及解決方案

STM32 UART + DMA + IDLE中斷使用中的幀錯誤(FE)問題及解決方案 在我調試STM32H7串口空閑中斷DMA接受時遇到了一個bug,這個現象發生在系統剛上電時,有個串口由于幀錯誤FE掛起了中斷,之后在HAL_UART_IRQHandler這個全局中斷處理函數結束后,所有的中斷使能標志位都被清除了,經過…

TDengine 選擇函數 BOTTOM() 用戶手冊

BOTTOM() 函數用戶手冊 函數定義 BOTTOM(expr, k)功能說明 BOTTOM() 函數統計表/超級表中某列的值最小 k 個非 NULL 值。如果多條數據取值一樣&#xff0c;全部取用又會超出 k 條限制時&#xff0c;系統會從相同值中隨機選取符合要求的數量返回。 返回值 數據類型: 同應用…