(二)用testng的groups管理用例

原文链接:https://www.cnblogs.com/Jourly/p/7002096.html

一、需求:

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

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