[跟着官方文档学TestNG][二][学习笔记]

举报
John2021 发表于 2022/04/30 22:07:01 2022/04/30
【摘要】 1.注解下面是对TestNG中可用注解及其属性的快速概述。@BeforeSuite:带注解的方法将在该套件中的所有测试运行之前运行。@AfterSuite:该套件中的所有测试都运行后,将运行带注解的方法。@BeforeTest:带注解的方法将在属于 <test> 标记内的类的任何测试方法运行之前运行。@AfterTest:被注解的方法将在属于 <test> 标签内的类的所有测试方法都运行后...

1.注解

下面是对TestNG中可用注解及其属性的快速概述。

@BeforeSuite:带注解的方法将在该套件中的所有测试运行之前运行。
@AfterSuite:该套件中的所有测试都运行后,将运行带注解的方法。
@BeforeTest:带注解的方法将在属于 <test> 标记内的类的任何测试方法运行之前运行。
@AfterTest:被注解的方法将在属于 <test> 标签内的类的所有测试方法都运行后运行。
@BeforeGroups:此配置方法将在之前运行的组列表。此方法保证在调用属于这些组中的任何组的第一个测试方法之前不久运行。
@AfterGroups:此配置方法将运行的组列表。此方法保证在调用属于任何这些组的最后一个测试方法后不久运行。
@BeforeClass:被注解的方法会在当前类的第一个测试方法被调用之前运行。
@AfterClass:被注解的方法会在当前类的所有测试方法都运行完之后运行。
@BeforeMethod:注解的方法将在每个测试方法之前运行。
@AfterMethod:注解的方法将在每个测试方法之后运行。

TestNG类的超类中注解的行为
当放置在TestNG类的超类上时,上面的注解也将被继承。例如,这对于在一个公共超类中集中多个测试类的测试设置很有用。  
在这种情况下,TestNG保证"@Before"方法以继承顺序执行(首先是最高的超类,然后沿着继承链向下),而"@After"方法以相反的顺序执行(沿着继承链向上)。

alwaysRun:
    对于before方法(beforeSuite、beforeTest、beforeTestClass和beforeTestMethod,但不是beforeGroups):如果设置为true,则无论属于哪个组,都会运行此配置方法。
    对于after方法 (afterSuite, afterClass, ...):如果设置为true,即使之前调用的一个或多个方法失败或被跳过,也会运行此配置方法。

dependsOnGroups:
    此方法所依赖的组列表。

dependsOnMethods:
    此方法所依赖的方法列表。

enabled:
    是否启用此类/方法上的方法。

groups:
    该类/方法所属的组列表。

inheritGroups:
    如果为true,则此方法将属于在类级别的@Test注解中指定的组。

onlyForGroups:
    仅适用于@BeforeMethod和@AfterMethod。如果指定,则仅当相应的测试方法属于列出的组之一时才会调用此setUp/teardown方法。
@DataProvider:将方法标记为为测试方法提供数据。带注解的方法必须返回一个Object[][],其中每个Object[]都可以分配测试方法的参数列表。想要从这个DataProvider接收数据的@Test方法需要使用一个与这个注解名称相同的dataProvider名称。

name:
    此数据提供者的名称。如果未提供,则此数据提供者的名称将自动设置为方法的名称。

parallel:
    如果设置为true,则使用此数据提供程序生成的测试将并行运行。默认值为false
@Factory:将方法标记为工厂,该工厂返回将由TestNG用作测试类的对象。该方法必须返回Object[]
@Listeners:在测试类上定义监听器

value:
    扩展org.testng.ITestNGListener的类数组。
@Parameters:描述如何将参数传递给@Test方法。

value:
    用于填充此方法的参数的变量列表。
@Test:将类或方法标记为测试的一部分。

alwaysRun:
    如果设置为true,即使它依赖于失败的方法,该测试方法也将始终运行。

dataProvider:
    此测试方法的数据提供者的名称。

dataProviderClass:
    查找数据提供者的类。如果未指定,则将在当前测试方法的类或其基类之一上查找数据提供者。如果指定了此属性,则数据提供者方法需要在指定类上是静态的。

dependsOnGroups:
    此方法所依赖的组列表。

dependsOnMethods:
    此方法所依赖的方法列表。

description:
    此方法的说明。

enabled:
    是否启用此类/方法上的方法。

expectedExceptions:
    测试方法预期抛出的异常列表。如果没有抛出异常或与此列表中的异常不同,则此测试将被标记为失败。

groups:
    该类/方法所属的组列表。

invocationCount:
    应调用此方法的次数。

invocationTimeOut:
    对于所有调用计数的累积时间,此测试应花费的最大毫秒数。如果未指定invocationCount,则此属性将被忽略。

priority:
    此测试方法的优先级。较低的优先级将首先被安排。

successPercentage:
    此方法预期的成功百分比。

singleThreaded:
    如果设置为true,则该测试类上的所有方法都保证在同一个线程中运行,即使当前正在使用parallel="methods"运行测试。此属性只能在类级别使用,如果在方法级别使用,它将被忽略。注意:此属性过去称为sequential(现在已弃用)。

timeOut:
    此测试应花费的最大毫秒数。

threadPoolSize:
    此方法的线程池大小。该方法将从invocationCount指定的多个线程中调用。注意:如果未指定 invocationCount,则忽略此属性。

2.testing.xml

你可以通过几种不同的方式调用TestNG:

  • testing.xml文件
  • ant
  • 命令行

这里介绍testng.xml的格式。下面是testing.xml文件

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1">
    <test name="Sample">
        <classes>
            <class name="com.example.SimpleTest"></class>
        </classes>
    </test>
    <test name="Regression1">
        <classes>
            <class name="com.example.ParameterSample"></class>
            <class name="com.example.ParameterTest"></class>
        </classes>
    </test>
</suite>

也可以指定包名而不是类名:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1">
    <test name="Sample">
        <packages>
            <package name="com.example"></package>
        </packages>
    </test>
</suite>

在这个例子中,TestNG将查看com.example包中的所有类,并且只保留具有TestNG注解的类。
还可以指定要包含和排除的组和方法:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1">
    <test name="Sample">
        <groups>
            <run>
                <exclude name="com.example.ParameterTest"></exclude>
                <include name="com.example.SimpleTest"></include>
            </run>
        </groups>
        <classes>
            <class name="com.example.SimpleTest">
                <methods>
                    <include name="aFastTest"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

还可以在testng.xml中定义新组并在属性中指定其他详细信息,例如是否并行运行测试、要使用多少线程、是否正在运行JUnit测试等…
默认情况下,TestNG将按照它们在XML文件中的顺序运行测试。如果希望此文件中列出的类和方法以不可预知的顺序运行,请将preserve-order属性设置为false

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1">
    <test name="Sample" preserve-order="false">
        <classes>
            <class name="com.example.SimpleTest">
                <methods>
                    <include name="aFastTest"/>
                    <include name="aSlowTest"/>
                </methods>
            </class>
            <class name="com.example.SimpleTest2"></class>
        </classes>
    </test>
</suite>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。