首页 > 其他分享 >TestNG语法

TestNG语法

时间:2024-09-25 09:44:55浏览次数:7  
标签:void TestNG 语法 test Test println public 测试方法

TestNG 是一个功能强大的 Java 测试框架,具有灵活的注解体系、测试方法分组、并行执行、依赖测试、异常测试等功能。它支持创建更高级的自动化测试解决方案。下面将详细介绍 TestNG 的基本语法和注解的用法。

1. TestNG 注解

TestNG 通过注解来定义测试流程,每个注解有不同的用途和执行顺序。以下是常见的 TestNG 注解:

  • @Test:标记一个方法为测试方法。
  • @BeforeSuite:在测试套件中的所有测试方法之前执行。
  • @AfterSuite:在测试套件中的所有测试方法之后执行。
  • @BeforeTest:在每个测试之前执行(用于 @Test 标注的方法之前)。
  • @AfterTest:在每个测试之后执行。
  • @BeforeClass:在当前类的第一个测试方法之前执行。
  • @AfterClass:在当前类的所有测试方法之后执行。
  • @BeforeMethod:在每个测试方法执行之前执行。
  • @AfterMethod:在每个测试方法执行之后执行。

注解的执行顺序

TestNG 注解的执行顺序如下:

  1. @BeforeSuite
  2. @BeforeTest
  3. @BeforeClass
  4. @BeforeMethod
  5. @Test
  6. @AfterMethod
  7. @AfterClass
  8. @AfterTest
  9. @AfterSuite

2. 基本示例

2.1 简单的测试类

java import org.testng.annotations.Test; public class BasicTest { @Test public void testMethod() { System.out.println("Test method is running"); } }

2.2 使用 @BeforeMethod@AfterMethod

java import org.testng.annotations.BeforeMethod; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; public class MethodTest { @BeforeMethod public void setUp() { System.out.println("Setup before each test"); } @Test public void testMethod1() { System.out.println("Running test method 1"); } @Test public void testMethod2() { System.out.println("Running test method 2"); } @AfterMethod public void tearDown() { System.out.println("Teardown after each test"); } }

输出顺序为:

sql Setup before each test Running test method 1 Teardown after each test Setup before each test Running test method 2 Teardown after each test

3. 高级功能

3.1 依赖测试

你可以使用 dependsOnMethods 来设置方法依赖关系。某些测试方法只在依赖的方法成功时才会执行。

java import org.testng.annotations.Test; public class DependencyTest { @Test public void setup() { System.out.println("Setup method"); } @Test(dependsOnMethods = {"setup"}) public void dependentTest() { System.out.println("This test depends on setup"); } }

3.2 分组测试

可以使用 groups 参数将测试方法进行分组,然后执行特定组的测试。

java import org.testng.annotations.Test; public class GroupTest { @Test(groups = {"sanity"}) public void sanityTest() { System.out.println("Sanity test"); } @Test(groups = {"regression"}) public void regressionTest() { System.out.println("Regression test"); } @Test(groups = {"sanity", "regression"}) public void bothTest() { System.out.println("Sanity and regression test"); } }

3.3 参数化测试

TestNG 支持通过 XML 或 @DataProvider 传递参数到测试方法中。

通过 XML 参数化
java import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class ParamTest { @Test @Parameters({"username", "password"}) public void loginTest(String username, String password) { System.out.println("Username: " + username); System.out.println("Password: " + password); } }
通过 @DataProvider 参数化
java import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class DataProviderTest { @DataProvider(name = "loginData") public Object[][] dataProviderMethod() { return new Object[][] { { "user1", "pass1" }, { "user2", "pass2" } }; } @Test(dataProvider = "loginData") public void loginTest(String username, String password) { System.out.println("Username: " + username); System.out.println("Password: " + password); } }

3.4 忽略测试

使用 @Test(enabled = false) 来忽略某个测试方法。

java @Test(enabled = false) public void ignoredTest() { // This test will be ignored }

3.5 超时测试

使用 @Test(timeOut = 1000) 来设置测试方法的最大执行时间(以毫秒为单位)。如果超过该时间,测试将失败。

java @Test(timeOut = 1000) public void timeoutTest() throws InterruptedException { Thread.sleep(1500); // This will cause the test to fail }

3.6 异常测试

可以通过 expectedExceptions 来测试某个方法是否抛出指定异常。

java @Test(expectedExceptions = ArithmeticException.class) public void exceptionTest() { int result = 1 / 0; // This will throw ArithmeticException }

4. TestNG XML 配置文件

TestNG 的强大之处在于其 XML 配置文件的灵活性,你可以在 testng.xml 文件中定义测试类、分组、并行执行等。

xml <!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd"> <suite name="TestSuite" parallel="methods" thread-count="2"> <test name="SampleTest"> <classes> <class name="com.example.BasicTest"/> <class name="com.example.GroupTest"/> </classes> </test> </suite>

5. 并行执行

通过在 testng.xml 中设置 parallel 属性,你可以并行执行测试方法、类或测试套件。可以指定 methodsclassestests

xml <suite name="ParallelSuite" parallel="methods" thread-count="3"> <test name="Test1"> <classes> <class name="com.example.ParallelTest"/> </classes> </test> </suite>

在代码中还可以使用 @Test(threadPoolSize = 3) 来并行执行测试方法。

标签:void,TestNG,语法,test,Test,println,public,测试方法
From: https://www.cnblogs.com/zaigua/p/18430680

相关文章

  • 1、A+B(python语法格式,模块,主模块等)
    总结:python有许多模块,通过import引入模块,或者使用from从模块导入函数#导入math模块importmath#使用模块中的定义的变量或者函数的语法格式为:模块.变量/函数print(math.sqrt(25))#使用math模块中的sqrt函数,表示开平方根#从math模块中导入sqrtfrommathimpor......
  • Doris MySQL SQL语法兼容性说明
    MySQL兼容性Doris是高度兼容MySQL语法,支持标准SQL。但是Doris与MySQL还是有很多不同的地方,下面给出了他们的差异点介绍。数据类型数字类型类型MySQLDorisBoolean-支持-范围:0代表false,1代表true-支持-关键字:Boolean-范围:0代表false,1代表trueBit......
  • 01.Java基础语法
    1.注释1.1单行注释//单行注释1.2多行注释/*多行注释:可以注释一段文字*/1.3JavaDoc:文档注释/***文档注释*/2.标识符Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。2.1标识符注意点所有标识符都应该以字母、$、_开始首字母之后可以是......
  • pyhton语法 正则表达式
    pyhton语法正则表达式1.正则表达式介绍1.1正则表达式入门1.2正则替换2.正则效验2.1正则-校验单个字符2.2正则-校验多个字符2.3正则-校验开头和结尾2.4正则-校验分组2.5正则校验邮箱2.6正则获取分组后的数据2.7引用指定组的内容总结1.正则表达式介绍1.1正......
  • 示例说明:sql语法学习
    SQL(StructuredQueryLanguage,结构化查询语言)是一种用于管理关系型数据库的标准语言。学习SQL可以帮助你有效地查询、插入、更新和删除数据库中的数据。以下是SQL语法的一些基本概念和常用命令:1.SQL基础语法SQL关键字:SQL语句通常以关键字开始,如SELECT、INSERT、UPDATE、DEL......
  • 万象更新 Html5 - vue.js: vue 模板语法基础(MVVM, 插值, 指令等)
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-vue.js:vue模板语法基础(MVVM,插值,指令等)示例如下:vue\basic.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>vue模板语法基础......
  • JavaScript语法特点
    let用来声明变量数组可通过数组名直接输出数组全部元素数组名.length可以返回长度NaN为数字型字符串可用单引号,双引号,反引号进行包裹字符串用反引号包裹,才可以使用模板字符串字符串.replace(正则,替换字符串)返回的是新字符串'',0,undefined,null,false,NaN布尔值都是false未......
  • mysql 语法1
    1、注释单行--多行/**/2、SQL分类主要分为四类DDL、DML、DQL、DCLDDLDataDefinitionLanguage,数据定义语言,用来定义数据库对象(数据库,表,字段)常用指令CREATE:在数据库中创建对象ALTER:更改数据库的结构DROP:从数据库中删除对象TRUNCATE:从表中删除所有记录,包括为记录分......
  • sql语法学习:关键点和详细解释
    学习SQL语法是掌握数据库操作的基础。以下是SQL语法的一些关键点和详细解释:1.SQL基础SQL(StructuredQueryLanguage)是一种用于管理和操作关系型数据库的标准语言。它主要包括以下几个部分:数据定义语言(DDL):用于定义数据库结构,如创建、修改和删除数据库对象。数据操作语言(DML......
  • Python语法进阶之路
    一、Python基础1.1注释定义和作用对代码解释说明,增强可读性单行注释#多行注释"""这是一个多行注释""" 1.2变量及变量类型 定义和作用计算机目的是计算,编程是为了更方便计算,计算对象就是变量,可以在程序运行过程中,临时存储数据 变量基本使用变量初始化变......