自动化测试之路之TestNG学习


TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,  功能都差不多, 只是功能更加强大,使用也更方便

Java中已经有一个JUnit的测试框架了。  TestNG比JUnit功能强大的多。  测试人员一般用TestNG来写自动化测试。  开发人员一般用JUnit写单元测试。

1  TestNG如何执行测试

第一种  直接执行:右键要执行的方法,  点Run As ->TestNG Test

第二种   通过testng.xml文件来执行. 把要执行的case, 放入testng.xml文件中。 右键点击testng.xml,  点Run As(类似我们代码的amm.xml)

第三种  TestNG组测试

TestNG中可以把测试用例分组,这样可以按组来执行测试用例比如:

复制代码

package TankLearn2.Learn;

import org.testng.annotations.Test;

public class GroupTest {

    @Test(groups = {"systemtest"})

    public void testLogin(){

        System.out.println("this is test login");

    }

    @Test(groups = {"functiontest"})

    public void testOpenPage(){

        System.out.println("this is test Open Page");

    }

}

复制代码

然后在testng.xml中 按组执行测试用例

复制代码

   

       

       

       

       

   

   

2 TestNG 异常测试

estNG通过@Test(expectedExceptions)  来判断期待的异常, 并且判断Error Message

3 TestNG参数化测试

第一种: testng.xml 方式使代码和测试数据分离,方便维护

第二种:@DataProvider能够提供比较复杂的参数。 (也叫data-driven testing)

4 TestNG忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false),  来禁用此测试用例

5 TestNG 依赖测试(某个方法必须依赖其他方法)dependsOnMethods()

6 TestNG默认情况下,会生产两种类型的测试报告HTML的和XML的。 测试报告位于 "test-output" 目录下.

7 TestNG https://blog.csdn.net/d6619309/article/details/52435084(讲的比较好的博客,每种注解的执行顺序有详细的讲解)

https://blog.csdn.net/taiyangdao/article/category/6352844/2(TestNG延伸)

8 suite  test class method  groups

9某些参数的意义

alwaysRun  对于在方法之前的调用(BeforeSuite,...除了beforeGroups),若为true,这个配置方法无视其所属的组而运行.对于在方法之后的调用(afterSuite, afterClass, ...),若为true, 这个配置方法会运行,即使其之前一个或者多个被调用的方法失败或者被跳过。

enabled  是否执行注解的测试。

inheritGroups 

默认是true,则此方法会从属于在类级由@Test注解中所指定的组。举例如下:

@Test(groups = "Tomandy")

public class TestNGHelloWorld {

@BeforeClass(inheritGroups = false) //如果xml文件配置按Tomandy组执行的话,@BeforeClass注解的方法不会被执行

public void setUp(){

System.out.println("setUp!");

}

@Test(groups = "Tom")

public void helloWorld(){

System.out.println("My first TestNG testCase!");

}

}

10 xml 里面参数的意义

name:suite名称,测试报告中展现

verbose: 在控制台中如何输出,该设置不影响测试报告

allow-return-values:如果设置为false,被@Test注解且有return的方法被忽略执行

annotations:如果为"javadoc", 则使用javadoc注解,否则使用jdk注解

configfailurepolicy:字典:continue,skip,如果@Before*方法失败,TestNG是否应该继续执行套件中的其余测试,默认为skip

data-provider-thread-count:并发执行data-provider的线程数,默认大小为10

group-by-instances:默认情况下,依赖方法按类分组。例如,如果方法b()依赖于方法a(),并且您有几个包含这些方法的类实例(因为数据提供者的工厂),

那么调用顺序将为:signIn("us"),signIn("uk"),signOut("us"),,signOut("uk")。group-by-instances设置为true的话,调用顺序将为:signIn("us"),signOut("us"),signIn("uk"),signOut("uk")

guice-stage:创建父注入器的stage

junit:是否以junit模式运行

object-factory:用于实现IObjectFactory的类,实例化测试对象

parallel:是否多线程并发运行测试,默认为false,字典:classes,methods,instances,tests,true,false

parent-module:用于创建所有guice注入器的父注入器的模块

preserve-order:默认情况下,TestNG将按照在XML文件配置的顺序运行测试。如果希望以不可预知的顺序运行文件中列出的类和方法,可将preserve-order属性设置为false

skipfailedinvocationcounts:是否跳过失败的调用

thread-count:使用并行模式,要使用的线程池的大小。

time-out:为具体执行单元设定一个超时时间,方法(parallel="methods")或测试(parallel="tests")

 11 DataProvider和Factory

@DataProvider:为测试用例提供参数,有多少组参数就会执行多少次用例,因此它是让一个测试类实例的某个方法执行多次,每次执行都是同一个实例

@Factory:创建一个测试类的多个实例,每个实例中的所有测试用例都会被执行,每次执行采用的是不同实例

12 注解详注之并发

TestNG将在同一个线程中运行相同test标签中的所有方法,不同test 标签下的用例在不同的线程执行。

13 编码执行TestNG

你可能感兴趣的:(自动化测试之路之TestNG学习)