套件测试(※)
解决的是什么?
如何一次运行多个测试类,为了解决这个问题,引入了TestSuite测试套件的概念。
不同的测试类可以组装成一个具备测试相关功能的套件,这个套件就叫做TestSuite。比如TestSuite有测试购物基本流程的测试套件,有测试促销的套件,有具备冒烟功能的套件或者具备回归功能的测试套件。
testsuite通过配置文件去实现。
三个类,配置,登录,支付,加一个testng.xml配置文件,配置好后,运行配置文件:
loginTest:
package com.course.testng.suite;
import org.testng.annotations.Test;
//主要的测试方法
public class LoginTest {
@Test
public void login(){
System.out.println("登录成功");
}
}
paytest
package com.course.testng.suite;
import org.testng.annotations.Test;
public class payTest {
@Test
public void pay(){
System.out.println("支付成功");
}
}
suiteconfig:
package com.course.testng.suite;
//写一下共有的类
import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
public class SuiteConfig {
@BeforeSuite
public void beforeSuite(){
System.out.println("Beforesuite运行了");
}
@AfterSuite
public void afterSuite(){
System.out.println("AfterSuite运行了");
}
@BeforeTest
public void BeforeTest(){
System.out.println("beforetest方法");
}
@AfterTest
public void AfterTest(){
System.out.println("AfterTest方法");
}
}
testng.xml
<?xml version="1.0" encoding="utf-8" ?>
<suite name="test">
<test name="login">
<classes>
<class name="com.course.testng.suite.SuiteConfig"/>
<class name="com.course.testng.suite.LoginTest"/>
</classes>
</test>
<test name="pay">
<classes>
<class name="com.course.testng.suite.SuiteConfig"/>
<class name="com.course.testng.suite.PayTest"/>
</classes>
</test>
</suite>
运行结果:
改变testng.xml:
<?xml version="1.0" encoding="utf-8" ?>
<suite name="test">
<test name="login">
<classes>
<class name="com.course.testng.suite.SuiteConfig"/>
<class name="com.course.testng.suite.LoginTest"/>
<class name="com.course.testng.suite.payTest"/>
</classes>
</test>
<!--<test name="pay">-->
<!--<classes>-->
<!--<class name="com.course.testng.suite.SuiteConfig"/>-->
<!--<class name="com.course.testng.suite.payTest"/>-->
<!--</classes>-->
<!--</test>-->
</suite>
运行结果:
再进一步理解,suite代码也可以直接写在业务代码里:
修改login:
package com.course.testng.suite;
import org.testng.annotations.*;
//主要的测试方法
public class LoginTest {
@Test
public void login(){
System.out.println("登录成功");
}
@BeforeSuite
public void beforeSuite(){
System.out.println("before testsuite");
}
@AfterSuite
public void afterSuite(){
System.out.println("after testsuite");
}
@BeforeTest
public void beforeTest(){
System.out.println("beforeTest");
}
@AfterTest
public void afterTest(){
System.out.println("afterTest");
}
}
testng.xml
<?xml version="1.0" encoding="utf-8" ?>
<suite name="test">
<test name="login">
<classes>
<!--<class name="com.course.testng.suite.SuiteConfig"/>-->
<class name="com.course.testng.suite.LoginTest"/>
<class name="com.course.testng.suite.payTest"/>
</classes>
</test>
<!--<test name="pay">-->
<!--<classes>-->
<!--<class name="com.course.testng.suite.SuiteConfig"/>-->
<!--<class name="com.course.testng.suite.payTest"/>-->
<!--</classes>-->
<!--</test>-->
</suite>
运行结果:
现在彻底明白testsuite的意思了吧。