【用例管理】用testng的groups管理用例

一、需求:

测试时经常有两种场景,第一种是冒烟测试的小部分用例;一类是全部用例。

二、针对第一种运行部分的用例,可以用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>

  

  

原文地址:https://www.cnblogs.com/Jourly/p/7002096.html