转自:http://blog.csdn.net/u013375059/article/details/54287470
testNG帮助文档链接:http://testng.org/doc/documentation-main.html
TestNG是一个测试Java应用程序的开源框架,类似JUnit和NUnit。
注解 | 描述 |
---|---|
@BeforeSuite | 注解的方法将只运行一次,运行所有测试前此套件中 |
@AfterSuite | 注解的方法将只运行一次此套件中的所有测试都运行之后 |
@BeforeCla | 注解的方法将只运行一次先行先试在当前类中的方法调用 |
@AfterCla | 注解的方法将只运行一次后已经运行在当前类中的所有测试方法 |
@BeforeTest | 注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行 |
@AfterTest | 注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行 |
@BeforeGrou | 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用 |
@AfterGrou | 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用 |
@BeforeMethod | 注解的方法将每个测试方法之前运行 |
@AfterMethod | 被注释的方法将被运行后,每个测试方法 |
@DataProvider | 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字 |
@Factory | 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[] |
@Listener | 定义一个测试类的监听器 |
@Parameter | 将xml文件中参数传递给@Test方法 |
@Test | 标记一个类或方法作为测试的一部分 |
属性 | 描述 |
---|---|
ame | uite的名字(他会出现在测试报告中) |
junit | 是否以junit模式运行 |
verbose | 在控制台中如何输出,这个设置不影响html版本的测试报告 |
arallel | 是否使用多线程测试(可加速测试) |
configfailurepolicy | 是否在运行失败了一次后继续尝试或跳过 |
thread-count | 如果设置了parallel,可以设置线程数 |
annotatio | 有‘javadoc’的时候寻找,没有的话使用jdk5的注释 |
time-out | 在终止method (如果parallel=”methods”) 或者test (如果parallel=”tests”)之前设置以毫秒为单位的等待时间 |
kipfailedinvocationcount | 是否跳过失败的调用 |
data-provider-thread-count | 提供一个整数线程池的范围为了使用parallel data |
object-factory | 一个继承IObjectFactory的类,被用来实例化测试对象 |
allow-return-value | 如果设置true,将会运行测试用例并返回值 |
示例
当测试逻辑一样,只是参数不一样时,采用数据驱动测试机制,避免写重复代码。TestNG中通过@DataProvider实现数据驱动。
利用@DataProvider做数据驱动,数据源文件可以是EXCEL,XML,甚至可以是TXT文本。以读取xml文件为例,通过@DataProvider读取XML文件中数据,然后测试方法只要标示获取数据来源的DataProvider,那么对应的DataProvider会把读取的数据传给该test方法。

DataProvider原理
xml中的父节点与test方法名对应,因此xml中同名父节点的个数就意味着该test方法会被重复执行多少次; 当dataprovider与test方法不在同一个类时,需指明dataprovider类,如dataProviderClass= GenerateData.cla
TestNG会监听每个测试case的运行结果,有时候我们需要定制一些其他功能,如自动截图,发送数据给服务器等。方法是新建一个继承TestListenerAdapter的类。 重写完成后,在需要的test方法前添加注解@Listeners(TestNGListener.class)
* BaseTest *