大家好,欢迎来到IT知识分享网。
Testng是一套开源测试框架,是从Junit继承而来,testng意为test next generation,主要有以下特性:
- annotations 注释,如 @test @BeforeMethod
- 支持多线程执行case
- 支持数据驱动 dataProvider
- 支持参参数
- 能够作为eclipse的插件
- 能够(配合reportng)生产客观的测试报告
- 可通过testng.xml管理执行case和suite
那么好的测试框架,怎么使用?
这里我们使用eclipse插件方式 安装详见:http://testng.org/doc/eclipse.html
testng使用
首先了解一下testng 的annotations
常见的有以下:
@BeforeClass: 该annotation在class激活之前执行
@BeforeMethod: 该annotation会在每个执行的方法之前执行
@Test ,该annotation 是你要执行测试的方法
@AfterMethod,该annotation在每个测试方法执行之后运行
@AfterClass 该annotation会在所有测试方法之后运行
具体生命周期如下图:
这里是所有的annotation
@BeforeSuite @AfterSuite @BeforeTest @AfterTest @BeforeGroups @AfterGroups @BeforeClass @AfterClass @BeforeMethod @AfterMethod |
Configuration information for a TestNG class:
@BeforeSuite: The annotated method will be run before all tests in this suite have run. |
实例:我们验证一下testng annotation 执行顺序,这个case里有两个 测试 ,执行顺序为beforeClass->beforeMethod->test1->afterMethod->beforeMethod->
test2->afterMethod->afterClass.
package com.dbyl.tests; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; /** * This is to verify testng annotation execute * @author Young * */ public class TestngExample { private int a; @BeforeMethod(alwaysRun=true) public void beforeMethod() { a = 2; System.out.println("This is beforeMethod method. The Value of a is: " + a); } @BeforeClass public void beforeClass() { a = 1; System.out.println("This is beforeClass method .The Value of a is: " + a); } @Test(groups = "TestngExample") public void testExample1() { a = 3; System.out.println("This is Test method1 .The Value of a is: " + a); } @Test(groups = "TestngExample") public void testExample2() { a = 4; System.out.println("This is Test method2 .The Value of a is: " + a); } @AfterClass public void afterClass() { a = 5; System.out.println("This is AfterClass Method .The Value of a is: " + a); } @AfterMethod public void afterMethod() { a = 6; System.out.println("This is AfterMethod Method .The Value of a is: " + a); } }
所以执行结果为:
1
2
3
4
5
6
7
8
9
10
|
This is beforeClass method .The Value of a is: 1
This is beforeMethod method. The Value of a is: 2
This is Test method1 .The Value of a is: 3
This is AfterMethod Method .The Value of a is: 6
This is beforeMethod method. The Value of a is: 2
This is Test method2 .The Value of a is: 4
This is AfterMethod Method .The Value of a is: 6
This is AfterClass Method .The Value of a is: 5
PASSED: testExample1
PASSED: testExample2
|
当然,还有BeforeSuite 等,不再做深入研究.
annotation后面可以加一些参数,比如alwaysRun=true/false,dependsOnMethods=””
alwaysRun控制是否每次都执行,dependsOnMethods是一种依赖,依赖某个方法执行
之前有提到testng数据驱动,使用dataProvider,dataProvider可以导入text ,excel等数据,
执行case时会从DataProvider依次拿出数据执行,同一个测试方法,会被执行相应的次数
package com.dbyl.tests; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class Case1 { @DataProvider public Object[][] testData1() { return new Object[][] { { 1, 2, 3 }, { 1, 2, 4 }, { 1, 3, 4 }, { -1, 3, 2 } }; } @DataProvider public Object[][] testData2() { return new Object[][] { { 5, 2, 3 }, { 1, 2, 4 }, { 1, -3, 4 }, { 6, 3, 2 } }; } public static int add(int a, int b) { return a + b; } public static int minus(int a, int b) { return a - b; } @BeforeClass public void beforeClass() { System.out.println("This is Before Class"); } @Test(groups = { "add" }, dataProvider = "testData1") public void addTest(int a, int b, int c) { System.out.println("This is test add method. "+a+" + "+ b+" = "+c); Assert.assertEquals(add(a, b), c); } @Test(groups = { "minus" }, dataProvider = "testData2") public void minusTest(int a, int b, int c) { System.out.println("This is test minus method. "+a+" - "+ b+" = "+c); Assert.assertEquals(minus(a, b), c); } @BeforeMethod public void beforeMethod() { System.out.println("This is Before Method"); } @AfterMethod public void afterMethod() { System.out.println("This is After Method"); } @AfterClass public void afterClass() { System.out.println("This is After Class"); } }
执行结果如下:
This is Before Class
This is Before Method
This is test add method. 1 + 2 = 3 This is After Method This is Before Method This is test add method. 1 + 2 = 4 This is After Method This is Before Method This is test add method. 1 + 3 = 4 This is After Method This is Before Method This is test add method. -1 + 3 = 2 This is After Method This is Before Method This is test minus method. 5 - 2 = 3 This is After Method This is Before Method This is test minus method. 1 - 2 = 4 This is After Method This is Before Method This is test minus method. 1 - -3 = 4 This is After Method This is Before Method This is test minus method. 6 - 3 = 2 This is After Method This is After Class PASSED: addTest(1, 2, 3) PASSED: addTest(1, 3, 4) PASSED: addTest(-1, 3, 2) PASSED: minusTest(5, 2, 3) PASSED: minusTest(1, -3, 4) FAILED: addTest(1, 2, 4)
由于天色已晚,明天继续总结.
接下来:testng.xml的配置和使用,已经参数传递
testng配合reportng 生成测试报告
testng 配合ant
转载请注明出处:http://www.cnblogs.com/tobecrazy/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30992.html