TestNG框架搭建整理

一、@Test 注解常用属性

  1. priority

    • 作用:定义测试方法执行顺序(数值越小优先级越高)

    • 示例

      @Test(priority = 1)
      public void setup() { /* 初始化操作 */ }
      
      @Test(priority = 2)
      public void testLogin() { /* 主测试逻辑 */ }
  2. groups

    • 作用:将测试方法分组,支持按组执行

    • 示例

      @Test(groups = {"P0"})
      public void criticalTest() { /* 关键路径测试 */ }
      
      @Test(groups = "P1")
      public void edgeCaseTest() { /* 边界测试 */ }

二、TestNG XML 文件详解

1. 常用标签说明

标签作用示例片段
<suite>定义测试套件(最高层级)<suite name="RegressionSuite" parallel="tests" thread-count="3">
<test>定义测试模块(可包含多个类)<test name="LoginTests" preserve-order="true">
<groups>定义组策略(选择/排除)<groups><run><include name="smoke"/></run></groups>
<classes>指定要运行的测试类<classes><class name="com.tests.LoginTest"/></classes>
<packages>按包名运行测试(自动扫描)<packages><package name="com.tests.*"/></packages>
<parameter>定义全局参数(可在测试类中通过@Parameters获取)<parameter name="env" value="staging"/>

2. 完整 XML 示例

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="FullRegression" verbose="1">
    <parameter name="baseUrl" value="https://api.example.com"/>
    
    <test name="SmokeTests">
        <groups>
            <run>
                <include name="smoke"/>
                <exclude name="wip"/> <!-- 排除进行中的测试 -->
            </run>
        </groups>
        <classes>
            <class name="com.tests.LoginTest"/>
            <class name="com.tests.SearchTest"/>
        </classes>
    </test>
    
    <test name="PaymentTests" parallel="methods" thread-count="2">
        <packages>
            <package name="com.tests.payment.*"/>
        </packages>
    </test>
</suite>

3. 执行 XML 的命令

# 基础命令
mvn test "-Dsurefire.suiteXmlFiles=src/testng.xml"

4. XML 文件存放路径

推荐项目结构:

src/
└── testng.xml          # XML配置文件

三、必备依赖清单(pom.xml)

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.30</version>
    </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>org.skyscreamer</groupId>
            <artifactId>jsonassert</artifactId>
            <version>1.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.57</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.10.1</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
<!--                <configuration>-->
<!--                    <suiteXmlFiles>-->
<!--                        <suiteXmlFile>src/ApiTest.xml</suiteXmlFile>-->
<!--                    </suiteXmlFiles>-->
<!--                </configuration>-->
            </plugin>
        </plugins>
    </build>

四、用例的xml书写

举例:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="RegressionSuite" verbose="1">
    
    <!-- 测试模块1:登录相关 -->
    <test name="LoginTests" parallel="methods" thread-count="3">
        <classes>
            <class name="com.tests.LoginTest"/>
            <class name="com.tests.TokenRefreshTest"/>
        </classes>
    </test>
    
    <!-- 测试模块2:支付流程 -->
    <test name="PaymentTests">
        <packages>
            <package name="com.tests.payment.*"/>
        </packages>
    </test>
    
    <!-- 测试模块3:按组执行 
     只运行 com.tests 包下带有 @Test(groups = "security") 注解的方法-->
    <test name="SecurityTests">
        <groups>
            <run>
                <include name="security"/>
            </run>
        </groups>
        <classes>
            <class name="com.tests.*"/>
        </classes>
    </test>
</suite>
name"RegressionSuite"定义测试套件名称(显示在报告中)✅ 必填
verbose"1"控制控制台日志详细程度(1-10,数字越大越详细)❌ 可选
parallel"tests"/"methods"/"classes"是否并行执行(默认false❌ 可选
thread-count"5"并行时的线程数(需配合parallel使用)

自上而下顺序执行

<test name="LoginTests">   <!-- 第一个执行 -->
<test name="PaymentTests"> <!-- 第二个执行 -->
<test name="SecurityTests"><!-- 第三个执行 -->

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值