0


TestNG 使用教程讲解

TestNG 使用教程讲解

一、Testng 介绍

Testng是一套开源测试框架,是从Junit继承而来;TestNG支持多种注解,可以进行各种组合,如下进行简单的说明

1、最常用的注解及描述如下:
@BeforeClass 在调用当前类的第一个测试方法之前运行,注释方法仅运行一次
@AfterClass 在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
@Test 将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法
@Listeners 定义测试类上的侦听器

2、比较常用的注解及描述如下:

@BeforeTest 注释的方法将在属于test标签内的类的所有测试方法运行之前运行
@AfterTest 注释的方法将在属于test标签内的类的所有测试方法运行之后运行
@BeforeMethod 注释方法将在每个测试方法之前运行
@AfterMethod 注释方法将在每个测试方法之后运行
@Parameters 描述如何将参数传递给@Test方法

2、了解即可的注解及描述如下:
@BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次
@AfterSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次
@BeforeGroups 配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行
@AfterGroups 此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行
@DataProvider 标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []

二、在pom.xml中引入testng测试框架

<dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.10</version></dependency>

三、使用Test运行测试用例

1、运行单个测试用例

importorg.testng.annotations.Test;publicclass testng {@Testpublicvoidabc(){System.out.println("这里是abc");}}

2、运行多个测试用例

importorg.testng.annotations.Test;publicclass testng {@Testpublicvoidabc(){System.out.println("这里是abc");}@Testpublicvoidabc1(){System.out.println("这里是abc1");}@Testpublicvoidabc2(){System.out.println("这里是abc2");}}

三、最常用的注解使用

1、最常用注解使用:
①、@BeforeClass & @AfterClass
在运行类之前或之后执行一次,@BeforeClass 中可写入初始数据,@AfterClass 清除数据

importorg.testng.annotations.AfterClass;importorg.testng.annotations.BeforeClass;importorg.testng.annotations.Test;publicclass testng_before_after_class {//    运行testng_before_after_class类的时,会执行一次@BeforeClasspublicvoidBeforeClass(){System.out.println("BeforeClass被运行");}@AfterClasspublicvoidAfterClass(){System.out.println("AfterClass被运行");}//    运行每个测试方法进都会被执行到@Testpublicvoidabc(){System.out.println("这里是abc");}@Testpublicvoidabc1(){System.out.println("这里是abc1");}@Testpublicvoidabc2(){System.out.println("这里是abc2");}}

②、创建xml文件
class name需要与测试的class类名一致 ,一个测试套件可以包含多个类
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM"http://testng.org/testng-1.0.dtd"><!--可以同时开启多条线程进行测试任务--><suite name="Suite1"  parallel="methods" thread-count="2"><test name="test12"><classes><class name="TestXxyx"></class></classes></test></suite>

③、运行testng.xml
在这里插入图片描述
④、控制台打印结果
在这里插入图片描述
2、@AfterMethod & @BeforeMethod

importorg.testng.annotations.*;publicclass testng_method {//    运行每个测试方法进都会被执行到@BeforeMethodpublicvoidBeforeMethod(){System.out.println("BeforeMethod被运行");}@AfterMethodpublicvoidAfterMethod(){System.out.println("AfterMethod被运行");}@Testpublicvoidabc(){System.out.println("这里是abc");}@Testpublicvoidabc1(){System.out.println("这里是abc1");}@Testpublicvoidabc2(){System.out.println("这里是abc2");}}

在这里插入图片描述
3、@Test(enabled = false)

importorg.testng.annotations.AfterMethod;importorg.testng.annotations.BeforeMethod;importorg.testng.annotations.Test;publicclass testng_enable {@Test(enabled =false)publicvoidabc(){System.out.println("这里是abc");}@Testpublicvoidabc1(){System.out.println("这里是abc1");}@Testpublicvoidabc2(){System.out.println("这里是abc2");}}

在这里插入图片描述
4、执行顺序
①、按xml中方法顺序执行

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd"><!--可以同时开启多条线程进行测试任务--><suitename="Suite1"parallel="methods"thread-count="2"><testname="test12"><classes><classname="testng_enable"><methods><includename="abc2"/><includename="abc1"/></methods><!--<class name="testng_base" >--></class></classes></test></suite>

在这里插入图片描述

②、按默认顺序执行

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd"><!--可以同时开启多条线程进行测试任务--><suitename="Suite1"parallel="methods"thread-count="2"><testname="test12"preserve-order="true"><classes><classname="testng_enable"><methods><includename="abc2"/><includename="abc1"/></methods><!--<class name="testng_base" >--></class></classes></test></suite>

在这里插入图片描述
5、构造参数化@Parameters(“”)

importorg.testng.annotations.BeforeTest;importorg.testng.annotations.Parameters;importorg.testng.annotations.Test;publicclass testng_parameters {//参数化@Test@Parameters("username")publicvoidfunction8(String test1){System.out.println("name == "+ test1);}}

6、引入testng断言

importorg.testng.Assert;importorg.testng.annotations.DataProvider;importorg.testng.annotations.Parameters;importorg.testng.annotations.Test;publicclass testng_assert {@TestpublicvoidassertTest(){String str1 ="testerhome";String str2 ="testerhome";Assert.assertEquals(str1,str2,"判断是否相等");boolean bl =true;boolean b2 =false;Assert.assertTrue(bl,"判断是否为true");Assert.assertFalse(b2,"判断是否为false");Object str3 =null;Assert.assertNull(str3,"判断是否为nul");Assert.assertNotNull(str3,"判断是否不为null");}}

在这里插入图片描述

importorg.testng.Assert;importorg.testng.annotations.DataProvider;importorg.testng.annotations.Parameters;importorg.testng.annotations.Test;publicclass testng_assert {@TestpublicvoidassertTest(){String str1 ="testerhome";String str2 ="testerhome1";Assert.assertEquals(str1,str2,"判断是否相等");boolean bl =true;boolean b2 =false;Assert.assertTrue(bl,"判断是否为true");Assert.assertFalse(b2,"判断是否为false");Object str3 =null;Assert.assertNull(str3,"判断是否为nul");Assert.assertNotNull(str3,"判断是否不为null");}}

在这里插入图片描述
6、@Listener
监听器

packageListener;importorg.testng.IInvokedMethod;importorg.testng.IInvokedMethodListener;importorg.testng.ITestResult;publicclassCustomListener1implementsIInvokedMethodListener{@OverridepublicvoidbeforeInvocation(IInvokedMethod iInvokedMethod,ITestResult iTestResult){System.out.println("beforeInvocation:"+ iTestResult.getTestClass().getName()+"-->"+ iInvokedMethod.getTestMethod().getMethodName());}@OverridepublicvoidafterInvocation(IInvokedMethod iInvokedMethod,ITestResult iTestResult){System.out.println("beforeInvocation"+ iTestResult.getTestClass().getName()+"-->"+ iInvokedMethod.getTestMethod().getMethodName());}}

监听方法

packageListenerDemo;importorg.testng.Assert;importorg.testng.annotations.Listeners;importorg.testng.annotations.Test;importListener.CustomListener1;@Listeners(CustomListener1.class)//通过注释调用监听器publicclassListenerTest{@Test(alwaysRun =true)publicvoidtest(){System.out.println("test()");Assert.assertTrue(false);}@Testpublicvoidtest2(){System.out.println("test2()");Assert.assertTrue(true);}}

testng.xml中的配置

<!DOCTYPEsuiteSYSTEM"http://testng.org/testng-1.0.dtd"><suitename="Regression Test"><testname="Application name"preserve-order="false"><classes><classname="ListenerDemo.ListenerTest"></class></classes></test></suite>

运行testng.xml结果如下:
在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_42464833/article/details/129006025
版权归原作者 小志老师 所有, 如有侵权,请联系我们删除。

“TestNG 使用教程讲解”的评论:

还没有评论