• TestNG—学习笔记2


            关于TestNG,也是一边学一边总结,对于TestNG和Junit的比较其实也没有什么意义,都是一种测试框架,都是为了应用而生的东西,没有必要说谁好谁不好了。用的熟练用的好就是真的好啊。

            下面简单的总结了些关于TestNG的基本使用方法,如果说的不明白或者有错误的地方,还望大家不要手下留情了。尽情拍砖,使劲的拍。。。。

            首先我们得了解一下关于TestNG的几种注释方法(都是从官网上翻译的,有问题迫切希望大家指正),了解以后往下走会越来越顺的。

    @BeforeSuite(执行集合之前执行的方法,它的优点我觉得应该体现在运行配置文件的时候,同时添加多个class,然后让有关的class同时运行进行测试)

    @AfterSuite(执行完所有的测试集合以后运行的方法)

    @BeforeClass(当前所在类的测试带@Test注释的方法运行之前运行一次)

    @AfterClass  (当前所在类的测试全部运行完以后运行一次)

    @BeforeTest (带有@Test注释的方法运行之前都会运行一次beforeTest中的方法)

    @AfterTest (带有@Test注释的方法运行之后都会运行一次afterTest中的方法)

    @BeforeMethond(在每个测试的方法之前运行一次)

    @AfterMethond(在每个测试的方法运行之后运行一侧)

    @BeforeGroups(结合在配置文件中使用,每个组运行之前运行一次)

    @AfterGroups(结合在配置文件中使用,每个组运行之后运行一次)

    @Test(表明这是一个测试用例的方法)

     

    上面个都是一些最基本的注释方法,接下来可以看到稍微复杂点的注释,就是关于参数化和监控之类的注释:

    @Listeners(相当于监控类,主要监控suite method 之类的相关动作,它主要是实现ISuiteListener,ITestListener,IInvokedMethodListener这三个对象,然后重写他们的相关方法)

    @DataProvider(数据提供,以数组的形式来提供数据,实现数据的参数化)

    @Parameters (结合配置文件来提供数据,实现数据的参数化)

    我门在学习TestNG时,其实TestNG最大的优点我觉得应该体现在它的Suite XML文件上,如果我们想同时运行几个测试类,这个时候我们不需要像JUnit那样在类里面定义Suite类了,TestNG将Suite从类里面分离出来了,它是直接写在一个XML文件中的。

    为了更好的理解上面几种注释方法,下面直接在Suite XML配置文件中定义来对他们进行了解,我觉得这样理解起来或许会更快一点。

    首先我们看看Suite XML文件的基本格式:

    <!-- suite name 自己定义,没有任何限制  -->
    <suite name="xxx">
    <!-- test name 也是自己定义的,名称不做任何限制 -->
        <test name="xxx">
    <!-- classes name 也是自己定义的,名称不做任何限制 -->
             <classes name="xxx">
    <!-- 可以添加多个class,然后同时运行这几个测试类-->
                    <class name="packageName.className1"/>
                    <class name="packageName.classNam2"/>    
             </classes>
        </test>
    </suite>

    Group的使用(结合下面的代码可以看出,当运行suiteXML文件的时候只有在组里面的测试用例才能被执行,在运行这个测试之前就会调用@BeforeGroups中的方法,运行完这个测试之后就会运行@AfterGroups这个方法)

    @Test(groups={"test1"})
     public void testMethond6(){
     
      System.out.println("testMethond6");
     }
    
     @Test (groups={"test2"})
     public void testMethond7(){
     
      System.out.println("tsetMethond7");
     
     }

    Suite XML 文件:

    <suite name="xxx">
         <test name="xxx">
           <gropus name="xxx">
                <run>
                 <include name="test1" />
               </run>
            </groups>
             <classes name="xxx>
                  <class name="className"> </class>
           </classes>
        </test>
    </suite>

    当我们运行上面的Suite XML文件的时候,只有被定义为test1的Group,方法“testMethond6”才会被执行,通过Group的控制,我们可以自定义一个测试类中需要运行的方法。

    关于DataProvider的使用(通过下面的代码展现):

    定义好DataProvider,然后将数据以数组的形式写到数组里面,在测试方法中直接调用DataProvider中定义好的数据:

    @DataProvider(name="data1")
     public static Object[][] getData(){
     
      return new Object[][] {{"user1","password1"},{"user2","password2"},{"user3","password3"}};
     
     }
     
     @Test(dataProvider="data1")
     public void testMethond8(String userName, String password){
     
      System.out.println("The UserName is:"+userName);
      System.out.println("The Password is:"+password);
       
     }

    关于参数化(Parameters)的使用,在suiteXML文件中定义好数据,然后直接通过value-key对应的方式得到相关的数据。

    @Test
     @Parameters({"username","password"})
     public void testMethond9(String userName, String password){
     
      System.out.println("The UserName is:"+userName);
      System.out.println("The Password is:"+password);
     
     }

    Suite XML:

    <suite name="testNG2">
        <paremeter name="username", value="liangtao1"></paremeter>
        <paremeter name="password",value="password1"></paremeter>
        <paremeter name="username", value="liangtao2"></paremeter>
        <paremeter name="password",value="password2"></paremeter>
        <test name="testNG2">
        <classes>
            <class name="study.testNG.TestListener"></class>
        </classes>
        </test>
    </suite>
  • 相关阅读:
    Promise
    location(未完)
    Web Storage API : LocalStroage
    从vmware下载到Linux环境下jdk和maven的安装
    2015.8.1 bootstrap学习(个人每日学习的随笔,比较凌乱
    git报错 error: cannot stat ‘'web/js': Permission denied
    移动端的自适应
    Socket .net MVC 的配置 包括异常断开
    ExtJS ComboBox之 键入自动查询
    ExtJS ComboBox之 2级联动
  • 原文地址:https://www.cnblogs.com/taoSir/p/4815664.html
Copyright © 2020-2023  润新知