我使用 Java WebDriver 库和 TestNG 框架扩展了 Selenium。运行测试脚本时,我注意到测试开始执行的时间过长,此时测试从 Excel 文件中获取输入参数(使用@DataProvider
注释)。
延迟可能长达 10 分钟左右,这使得运行和调试非常耗时。这种重大延误是否有原因?
我使用 Java WebDriver 库和 TestNG 框架扩展了 Selenium。运行测试脚本时,我注意到测试开始执行的时间过长,此时测试从 Excel 文件中获取输入参数(使用@DataProvider
注释)。
延迟可能长达 10 分钟左右,这使得运行和调试非常耗时。这种重大延误是否有原因?
是的,可能是因为您从 excel(贪婪的数据提供程序)读取的方式,并且取决于您的 excel 文件有多大。有一种叫做惰性数据提供者的东西。在这里找到了一个例子。从链接发布代码。
为了更好地理解需要查看您的代码。
public class LazyDataProviderExample {
@Test(dataProvider = "data-source")
public void myTestMethod(String info) {
Reporter.log("Data provided was :" + info, true);
}
@DataProvider(name = "data-source")
public Iterator<Object[]> dataOneByOne() {
return new MyData();
}
private static class MyData implements Iterator<Object[]> {
private String[] data = new String[] { "Java", "TestNG", "JUnit" };
private int index = 0;
@Override
public boolean hasNext() {
return (index <= (data.length - 1));
}
@Override
public Object[] next() {
return new Object[] { data[index++] };
}
@Override
public void remove() {
throw new UnsupportedOperationException("Removal of items is not supported");
}
}
}
出于某种原因,通过重建我的自定义 Firefox 配置文件解决了这个问题 - 它可能已经损坏。
只是将其发布为参考答案,以防任何人陷入此问题。