关于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>

TestNG—学习笔记2的更多相关文章

  1. testNG 学习笔记 Day 1 使用功能详解

    TestSuite处理测试用例有6个规约(否则会被拒绝执行测试) A 测试用例必须是公有类(Public) B 测试用例必须继承与TestCase类 C 测试用例的测试方法必须是公有的( Public ...

  2. TestNG学习笔记目录

    学习TestNG主要用于GUI自动化测试使用,学习目录随进度不断更新.文档内容主要是翻译官方doc,同时加入自己的理解和案例.如有理解偏差欢迎指正 一.TestNG Eclipse plug-in 安 ...

  3. testNG 学习笔记 Day 3 常用的断言

    TestNG中最常用的一个断言类是Assert.java,里面有多个静态方法,这个类我们习惯叫硬断言.对应的还有一个软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关 ...

  4. testNG 学习笔记 Day2 配置testNG自带的监听器

    IntelliJ IDEA配置testNG自带的监听器的时候,操作如下菜单栏中 run ----> 下拉菜单中的 Edit Configurations ----> 新矿口中TeatNG下 ...

  5. testng学习笔记-- 场景和module

    一.定义 TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便. TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Ge ...

  6. TestNG学习笔记 一

    一. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的过程有 ...

  7. TestNG学习笔记新的

    1.参考官方文档https://www.yiibai.com/html/testng/2013/0915300.html package com.cib.testng; import org.test ...

  8. testng学习笔记-- beforesuit和aftersuit

    一.定义 测试套件,主要关注执行顺序 套件:suit可以包含多个class 二.代码标签 三.运行结果

  9. testng学习笔记-- beforeclass和afterclass

    一.定义 类之前和类之后运行的方法 使用场景: 类运行之前是否需要静态方法,变量赋值,写完其他方法都可以用了 二.标签代码 三.运行结果

随机推荐

  1. Note 387206.1 ORA-15041: ASM diskgroup with unlike disks sizes

    Applies to: Oracle Server - Enterprise Edition - Version: 10.1.0.2 to 10.2.0.1 - Release: 10.1 to 10 ...

  2. 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(四)数据库安装(单节点)

    一.卸载CentOS自带的MySQL 1.1 查看之前是否安装过mysql [root@master mysql]# rpm -qa|grep -i mysql mysql-libs--.el6.x8 ...

  3. 20145203盖泽双 《网络对抗技术》实践1—— MAL_逆向与Bof基础

    20145203盖泽双 <网络对抗技术> MAL_逆向与Bof基础 实践目标 (1)我们要通过修改程序代码,使得程序运行其自身中本不该运行的代码片段. (2)在这里,我们有一个名为2014 ...

  4. Python web项目Django部署在Ubuntu18.04腾讯云主机上

    Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04 材料准备 准备一个Django项目 准备一台Ubuntu18.04的主机 ssh连接到主机(腾 ...

  5. Mac下安装Mongodb

    Mac下安装Mongodb 一: 安装MongoDB: Mac下安装MongoDB有两种方法,第一种是通过源码安装,另一种是使用 homebrew, 下面我使用homebrew来安装,首先我们需要安装 ...

  6. 上传文件,不依赖 Jquery flash 插件,用到HTML5 input 新属性实现过滤文件格式、同时上传多个文件

    1.样式 2.js 3.后台处理 4.效果图 一.样式 <style> .divUpload { position: relative; } .divUploadFirst { width ...

  7. android java.lang.NoClassDefFoundError: cn.yw.lib.viewpagerfragment.ViewPagerFragmentActivity

    假如你判断你的项目没有异常,并且该注册的Activity也注册了.那么解决这个问题的方法就是:右击项目->properties->Java Build Path->Order and ...

  8. (转)tomcat 修改默认访问项目名称和项目发布路径

    1.项目发布路径 <Host name="localhost" appBase="webapps" unpackWARs="true" ...

  9. (转)linux sudo 重定向,实现只有系统管理员才有权限操作的文件中写入信息

    众所周知,使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式. 本文介绍如何将 echo 命令与 sudo 命令配合使用,实现向那些只有系统管理员才有权限操作的文件中写入信息.   比如 ...

  10. IDC Digital Transition Annual Festival(2018.10.19)

    时间:2018.10.19地点:北京万达文化酒店