自动化的框架选择webdriver+TestNG+Ant,是因为便于Daily Build 和Ant的集成,而单元测试框架选择TestNG是由于具有以下优势,最主要体现"直接用Excel做为数据源"和"在xml中定义测试任务"
1.对于注解类的支持
Junit的执行顺序:
Setup( ) test1( ) tearDown( ) Setup( ) test2( ) tearDown( )
TestNG的执行顺序:
Setup( ) test1( ) test2( ) tearDown( )
2.定义测试任务
Junit中要定义测试任务是要写TestSuit的,居然要写硬编码,而TestNG全部写在testng.xml(名字可以自定义的)中的,然后可以通过ant来调用。
3.测试参数化
Junit是不带任何参数的,不论是测试方法还是配置方法,而TestNG都是可以添加参数的,有2种方法
(1)使用Parameter参数(试用的场景比较少):
public class TestNGTest6_1_0 {
@Test
@Parameters(value="number")
public void parameterIntTest(int number) {
System.out.println("Parameterized Number is : " + number);
}
}
然后,在我们的Testng.xml文件中,我们把参数的具体值设置进来,如下:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<parameter name="number" value="2"/>
<classes>
<class name="com.fsecure.demo.testng.TestNGTest6_0" />
</classes>
</test>
</suite>
(2)DataProvider(实际应用场景可参考博客:解析Excel,通过Excel驱动测试数据参数化http://blog.csdn.net/luozhuwang/article/details/9701491)
我们用一个DataProvider属性来给被测试的方法上声明它需要的数据,然后平行的,用@DataProvider注解来标注一个方法,让这个方法的返回值返回具体的数据
@Test(dataProvider = "Data-Provider-Function")
public void parameterIntTest(TestNGTest6_3_0 clzz) {
System.out.println("Parameterized Number is : " + clzz.getMsg());
System.out.println("Parameterized Number is : " + clzz.getNumber());
}
然后相应的我们用@DataProvider来标注一个方法,这个方法提供了数据:
@DataProvider(name = "Data-Provider-Function")
public Object[][] parameterIntTestProvider() {
TestNGTest6_3_0 obj = new TestNGTest6_3_0();
obj.setMsg("Hello");
obj.setNumber(123);
return new Object[][]{
{obj}
};
}
4.测试依赖性
对于JUnit 来说,所有的测试彼此之间都是独立的,毫无依赖性。
但是对于 TestNG来说,我们完全可以让测试彼此之间有依赖性,做法就是dependsOnMethods属性来标识一个被依赖的测试方法:
@Test
public void method1() {
System.out.println("This is method 1");
}
@Test(dependsOnMethods={"method1"})
public void method2() {
System.out.println("This is method 2");
}
自动化测试过程中的实用性不是很强,用例之间尽量保持独立性
————————————————
版权声明:本文为CSDN博主「小李广」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luozhuwang/article/details/14646839