testng使用详解 (2)

同一个组里的方法类,如果分别属于两个不同的测试用例(<test>)内,那么它们其实可以算两个组,它们会在每个测试用例分别运行,而不会合在一起运行;

示例:

package com.ggf.testng.groups; import org.testng.annotations.AfterGroups; import org.testng.annotations.BeforeGroups; import org.testng.annotations.Test; import javax.sound.midi.Soundbank; /** * @Description: 对测试用例方法进行分组,可以对一组中的数据进行初始化 * @Author: ggf * @Date: 2019/12/29 */ public class GroupsOnMethod { @BeforeGroups(groups = "server") public void beforeGroupsOnServer() { System.out.println("服务端组运行前执行的方法。。。"); } @BeforeGroups(groups = "client") public void beforeGroupsOnClient() { System.out.println("客户端组运行前执行的方法。。。"); } @Test(groups = "server") public void test1() { System.out.println("server test1 run ...."); } @Test(groups = "server") public void test2() { System.out.println("server test2 run ...."); } @Test(groups = "client") public void test3() { System.out.println("client test3 run ...."); } @Test(groups = "client") public void test4() { System.out.println("client test4 run ...."); } @AfterGroups(groups = "server") public void afterGroupsOnServer() { System.out.println("服务端组运行之后执行的方法。。。"); } @AfterGroups(groups = "client") public void afterGroupsOnClient() { System.out.println("客户端组运行之后执行的方法。。。"); } }

运行结果:

[TestNG] Running: C:\Users\Administrator\.IntelliJIdea2019.2\system\temp-testng-customsuite.xml 服务端组运行前执行的方法。。。 server test1 run .... server test2 run .... 服务端组运行之后执行的方法。。。 客户端组运行前执行的方法。。。 client test3 run .... client test4 run .... 客户端组运行之后执行的方法。。。 =============================================== Default Suite Total tests run: 4, Failures: 0, Skips: 0 =============================================== 5、超时属性timeOut

@Test(timeOut = 3000) 设置超时时间,单位为毫秒。

示例:

package com.course.testng; import org.testng.annotations.Test; public class TimeOutTest { /** * 单位为毫秒值,3秒内没有响应,就证明失败了,反之成功 * @throws InterruptedException */ @Test(timeOut = 3000) public void testSuccess() throws InterruptedException { Thread.sleep(2000); } @Test(timeOut = 2000) public void testFailed() throws InterruptedException { Thread.sleep(3000); } }

运行结果:

[TestNG] Running: C:\Users\Administrator\.IntelliJIdea2019.2\system\temp-testng-customsuite.xml org.testng.internal.thread.ThreadTimeoutException: Method com.course.testng.TimeOutTest.testFailed() didn't finish within the time-out 2000 =============================================== Default Suite Total tests run: 2, Failures: 1, Skips: 0 =============================================== 6、属性总结 属性名 描述
alwaysRun   设置为 true 时,无论什么情况都会运行  
dataProvider   数据提供者的名称  
dataProviderClass   如果未指定,将在当前测试方法的类或其父类之一上查找数据提供者。 如果指定了此属性,则数据提供者方法在指定的类上必须是静态的。  
dependsOnGroups   依赖的组列表  
dependsOnMethods   依赖的方法列表  
description   说明  
enabled   默认为true,设置为 false 时失效  
expectedExceptions   预期测试方法将引发的异常列表。 如果未引发任何异常或与该列表中的异常不同,则此测试将标记为失败。  
groups   所属组  
invocationCount   调用次数  
invocationTimeOut   所有 invocationCount 的累积超时时间。 注意:如果未指定 nvocationCount,则将忽略此属性。  
priority   此测试方法的优先级  
successPercentage   该方法预期成功的百分比  
singleThreaded   如果设置为 rue,则即使当前正在使用 parallel =“ methods” 运行测试,也保证该测试类上的所有方法都可以在同一线程中运行。 此属性只能在类级别使用,如果在方法级别使用,则将被忽略。  
timeOut   超时时间  
threadPoolSize   此方法的线程池的大小。 该方法将从 invocationCount 指定的多个线程中调用。 注意:如果未指定 invocationCount,则忽略此属性  
三、testng常用注解 注解 描述
@BeforeSuite   在该套件的所有测试都运行在注释的方法之前,仅运行一次(套件测试是一起运行的多个测试类)。  
@AfterSuite   在该套件的所有测试都运行在注释方法之后,仅运行一次。  
@BeforeClass   在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。  
@AfterClass   在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。  
@BeforeTest   注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。  
@AfterTest   注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。  
@BeforeGroups   配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。  
@AfterGroups   此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。  
@BeforeMethod   注释方法将在每个测试方法之前运行。  
@AfterMethod   注释方法将在每个测试方法之后运行。  
@Parameters   描述如何将参数传递给@Test方法。  
@DataProvider   标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。  
@Factory   将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []。  
@Listeners   定义测试类上的侦听器。  
@Test   将类或方法标记为测试的一部分。  

示例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzgxdw.html