一、需求:
测试时经常有两种场景,第一种是冒烟测试的小部分用例;一类是全部用例。
二、针对第一种运行部分的用例,可以用groups来管理
package com.testcases; import org.testng.annotations.Test; import com.pages.LoginPage; import com.jxl.excel.ExcelData; import jxl.read.biff.BiffException; import static org.testng.Assert.*; import java.io.IOException; import java.lang.reflect.Method; import java.util.HashMap; import org.openqa.selenium.TimeoutException; import knife.BrowserEmulator; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.AfterMethod; public class LoginTest { BrowserEmulator browser; LoginPage loginPage; String url = "https://passport.dxqas.com"; @DataProvider(name = "loginData" ) public Object[][] testData(Method method) { ExcelData e = new ExcelData("LoginTest", method.getName()); return e.getExcelData(); } /** * 测试登录没有输入用户名 */ @Test(groups={"smoke"}, dataProvider = "loginData") public void testNoNameLogin(HashMap<String, String> data) { String username = data.get("username"); String password = data.get("password"); loginPage.doLogin(username, password); assertEquals(loginPage.getNoNameTip(), data.get("expectedNoNameTip")); } @BeforeMethod(groups={"smoke"} ) public void beforeMethod() { browser = new BrowserEmulator(); loginPage = new LoginPage(browser); browser.open(url); } @AfterMethod(groups={"smoke"}) public void afterMethod() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } browser.quit(); } }
这里需要注意的是,beforemethod和aftermethod也必须加入groups,才会被执行。
然后在testng里配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="testsuite" > <!-- 执行冒烟测试 --> <test name="LoginTest" preserve-order="true"> <groups> <run> <include name="smoke" /> </run> </groups> <classes> <class name="com.testcases.LoginTest" /> </classes> </test> </suite>
classes必须把类加载进来,或者加载一个包。
三、运行全部用例,可以一个类一个类的加,也可以直接加载一个包,更简便,用例一般都在testcases包里。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"> <test name="test"> <packages> <package name="com.testcases"/> </packages> </test> </suite>