关于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. PHP开发小技巧②—实现二维数组根据key进行排序

    在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果:但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来 ...

  2. hadoop学习笔记壹 --环境搭建及配置文件的修改

    Hadoop生态和其他生态最大的不同之一就是“单一平台多种应用”的理念了. hadoop能解决是什么问题: 1.HDFS :海量数据存储 MapReduce: 海量数据分析   YARN :资源管理调 ...

  3. Struts 2.5.20 在Eclipse IDE中的配置和开发实例

    零.参考博客1.Struts框架入门教程2.Struts 2.5.10.1配置 3.eclipse中搭建Struts2.5.16 4.Struts2.5+eclipse+tomcat8.5配置 注意: ...

  4. solvepnp

    CV_EXPORTS_W bool solvePnP( InputArray objectPoints,- 世界坐标系下的控制点的坐标,vector<Point3f>的数据类型在这里可以使 ...

  5. 深入浅出的webpack4构建工具---Scope Hoisting(十六)

    一:什么是Scope Hoisting? 它有什么作用?Scope Hoisting 它可以让webpack打包出来的代码文件更小,运行更快,它可以被称作为 "作用域提升".是在w ...

  6. js将有父子关系的数据转换成树形结构数据

    js将有父子关系的数据转换成树形结构数据 比如如下基本数据: let allDatas = [ { id: 3, name: 'bbbb', parendId: 1 }, { id: 2, name: ...

  7. PAT A1108 Finding Average (20 分)——字符串,字符串转数字

    The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...

  8. scrapy实验1 爬取中国人寿官网新闻,保存为xml

    一.scrapy 实验  爬中国人寿新闻,保存为xml 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10517297.html 链 ...

  9. java Scanner类的使用

    参考链接:https://blog.csdn.net/android_depon/article/details/69669160     https://www.cnblogs.com/zhengc ...

  10. android.view.WindowManager$BadTokenException: Unable to add window

    这是在加载dialog时出现的一个异常.转载地址:http://hi.baidu.com/fbdfp/item/7dea2d0ade9121813d42e23d 扔了好久的android又开始断断续续 ...