我已经使用Selenium Webdriver / TestNG / Maven开发了一个回归套件。我使用了数据提供程序注释,并使其成为Excel驱动。 excel包含5-7个主题领域,表中包含相应的测试用例。通过在指标列中指定Y,可以在任何选项卡中启用测试用例。 我在这里面临的问题是我想将该套件集成到管道中。但是我想为输入提供要运行的区域或测试用例,只有那一部分将作为管道的一部分运行。
我尝试使用testng组,但是由于dataprovider而失败。
答案 0 :(得分:0)
由于测试用例是由数据驱动的,并且决定是否执行它们是通过excel电子表格中的列来进行的,因此可以通过在数据提供者方法中添加过滤机制来轻松实现此目的。这是步骤集,也是详细说明用例的示例。
这是一个示例,展示了这一点。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestClassSample {
@Test(dataProvider = "dp")
public void testMethod(String area, String category) {
System.err.println("Area = " + area + ", Category = " + category);
}
@DataProvider(name = "dp")
public Iterator<Object[]> getData(ITestContext ctx) {
//Read the JVM argument. If no value is found we default to "all" categories.
String categories = System.getProperty("category", "all");
List<Object[]> data =
new ArrayList<>(
Arrays.asList(
new Object[] {"Bangalore", "all"},
new Object[] {"Chennai", "smoke"},
new Object[] {"Mysore", "all"}));
if (categories == null || categories.trim().isEmpty() || "all".equalsIgnoreCase(categories)) {
return data.iterator();
}
data.removeIf(each -> !categories.equalsIgnoreCase(each[1].toString()));
return data.iterator();
}
}