测试人员一般用TestNG来写自动化测试。 开发人员一般用JUnit写单元测试。
在我们创建测试用例时,大概分三个层级。
- 测试包(目录)
- 测试类(文件)
- 测试用例(@Test 注解的方法)
接下来介绍,如何控制这三个级别用例的执行
核心还是通过 testng.xml 文件配置
1.用例分组
2.用例执行顺序
3.用例依赖(上一个用例执行失败,下一个依赖的用例不在执行)
4.测试组件依赖(dependsOnGroups 来设置组的依赖,testAdd1()和 testAdd2() 同属于于 funtest组,testAdd3() 依赖于funtest组,该组有中有一条用例运行失败,则testAdd3() 不再执行。)
5.
通过 @DataProvider 实现参数化
package com.net.suit.discover;
import static org.testng.Assert.assertEquals;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class DataProviderTest {
// @Test
// @Parameters({"add1","add2","result"})
// public void testAdd1(int add1,int add2,int result) {
// assertEquals(add1+add2,result);
//
// }
//定义对象数组
@DataProvider(name="add")
public Object[][] Users(){
return new Object[][] {
{3,2,5},
{2,2,4},
{3,3,7},
};
}
@Test(dataProvider="add")
public void testAdd2(int add1,int add2,int result) {
assertEquals(add1+add2,result);
}
}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test12" preserve-order="false">
<classes>
<class name="com.net.suit.discover.DataProviderTest">
<methods>
<include name="testAdd2" />
</methods>
</class>
</classes>
</test>
</suite>
xml配置按方法来配置就行了,如果是通过parameter 传参数,就按 下面的配置
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="测试套件">
<test name="简单测试">
<parameter name="add1" value="3"/>
<parameter name="add2" value="2"/>
<parameter name="result" value="5"/>
<classes>
<class name="test.sample.DataProviderTest" />
</classes>
</test>
6.
当然我们也可以设置测试报告的内容级别.
verbose="2" 标识的就是记录的日志级别,共有0-10的级别,其中0表示无,10表示最详细
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test12" verbose="2">
<classes>
<class name="TankLearn2.Learn.TestNGLearn1" />
</classes>
</test>
</suite>