在使用Allure TestNG和@DataProvider时,可以通过实现ITestAnnotation接口来自定义测试方法名称。下面是一个示例:
import io.qameta.allure.Allure;
import io.qameta.allure.AllureLifecycle;
import io.qameta.allure.model.Label;
import org.testng.ITest;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
@Listeners(CustomNameListener.class)
public class CustomNameTest implements ITest {
private String testName;
@DataProvider(name = "data")
public Object[][] testData() {
return new Object[][]{
{"Test 1", "Data 1"},
{"Test 2", "Data 2"},
{"Test 3", "Data 3"}
};
}
@Test(dataProvider = "data")
public void testMethod(String testName, String data) {
this.testName = testName;
System.out.println("Test Data: " + data);
}
@Override
public String getTestName() {
return testName;
}
}
class CustomNameListener implements ITestListener {
private AllureLifecycle lifecycle = Allure.getLifecycle();
@Override
public void onTestStart(ITestResult result) {
if (result.getMethod().getConstructorOrMethod().getMethod().getDeclaringClass()
.getAnnotation(Listeners.class) != null) {
ITest test = (ITest) result.getInstance();
List
在上述示例中,我们实现了ITest接口并重写了getTestName()方法,该方法用于获取自定义的测试方法名称。
然后,我们创建了一个名为CustomNameListener的ITestListener实现类,该类用于在测试开始时更新Allure报告中的测试方法名称。
最后,在测试类上使用@Listeners(CustomNameListener.class)注解将CustomNameListener类应用到测试类中。
这样,在使用@DataProvider进行数据驱动测试时,每个测试方法的方法名将根据数据提供者中的参数自动设置为自定义名称,从而实现了自定义测试方法名称的目的。