美文网首页测试
自动化测试之路之TestNG学习

自动化测试之路之TestNG学习

作者: hurtsogood | 来源:发表于2019-09-30 14:27 被阅读0次


    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中 按组执行测试用例

    复制代码

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

    <suite name="Suite1">

        <test name="test1">

            <groups>

            <run>

            <include name="functiontest" />

            </run>

        </groups>

        </test>

    </suite>

    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学习

        本文链接:https://www.haomeiwen.com/subject/zzgcpctx.html