Testng 不单独计算数据提供者测试
Testng does not count dataprovider tests individually
这是我的数据提供者
@DataProvider(name = "arrayBuilder")
public Object[][] parameterTestProvider() {
//Code to obtain retailerIDList
String[] retailerIDArray = retailerIDList.toArray(new String[retailerIDList.size()]);
assertEquals(1295, retailerIDList.size(), "Expected 1295, found " + retailerIDList.size() + " docs");
return new Object[][] {{retailerIDArray}};
}
这是我的测试
@Test(dataProvider = "arrayBuilder", invocationCount = 1, threadPoolSize = 1)
public void getRetailer(String[] retailerIDList) {
for (String retailer_ID : retailerIDList) {
//Code that uses the retailerID
}
当我执行这个测试时,TestNG 输出将 "getRetailer" 列为唯一的测试。我有 1295 条记录由 dataprovider 返回,我想要报告 1295 次测试。我错过了什么?
DataProvider 单独为每个数据集迭代时,只会产生测试的累积结果,而不是每次迭代的结果。
尝试将测试工厂与 DataProvider 一起使用,以获得每次测试迭代的单独结果。
请使用它,它应该可以工作。您需要 return 个对象数组,其中每一行都是您要用于测试的一行数据。然后只有它会出现在报告中。您正在做的是向它发送一个数组,以便将其视为单个测试。
@DataProvider(name="provideData")
public Iterator<Object[]> provideData() throws Exception
{
List<Object[]> data = new ArrayList<Object[]>();
String[] retailerIDArray = retailerIDList.toArray(new String[retailerIDList.size()]);
assertEquals(1295, retailerIDList.size(), "Expected 1295, found " + retailerIDList.size() + " docs");
for(String retailerID : retailerIDArray ){
data.add(new Object[]{retailerID});
}
return data.iterator();
}
@Test(dataProvider = "provideData")
public void getRetailer(String retailerIDList) {
for (String retailer_ID : retailerIDList) {
//Code that uses the retailerID
}
}
有关更多信息,请阅读文档 here
这是我的数据提供者
@DataProvider(name = "arrayBuilder")
public Object[][] parameterTestProvider() {
//Code to obtain retailerIDList
String[] retailerIDArray = retailerIDList.toArray(new String[retailerIDList.size()]);
assertEquals(1295, retailerIDList.size(), "Expected 1295, found " + retailerIDList.size() + " docs");
return new Object[][] {{retailerIDArray}};
}
这是我的测试
@Test(dataProvider = "arrayBuilder", invocationCount = 1, threadPoolSize = 1)
public void getRetailer(String[] retailerIDList) {
for (String retailer_ID : retailerIDList) {
//Code that uses the retailerID
}
当我执行这个测试时,TestNG 输出将 "getRetailer" 列为唯一的测试。我有 1295 条记录由 dataprovider 返回,我想要报告 1295 次测试。我错过了什么?
DataProvider 单独为每个数据集迭代时,只会产生测试的累积结果,而不是每次迭代的结果。
尝试将测试工厂与 DataProvider 一起使用,以获得每次测试迭代的单独结果。
请使用它,它应该可以工作。您需要 return 个对象数组,其中每一行都是您要用于测试的一行数据。然后只有它会出现在报告中。您正在做的是向它发送一个数组,以便将其视为单个测试。
@DataProvider(name="provideData")
public Iterator<Object[]> provideData() throws Exception
{
List<Object[]> data = new ArrayList<Object[]>();
String[] retailerIDArray = retailerIDList.toArray(new String[retailerIDList.size()]);
assertEquals(1295, retailerIDList.size(), "Expected 1295, found " + retailerIDList.size() + " docs");
for(String retailerID : retailerIDArray ){
data.add(new Object[]{retailerID});
}
return data.iterator();
}
@Test(dataProvider = "provideData")
public void getRetailer(String retailerIDList) {
for (String retailer_ID : retailerIDList) {
//Code that uses the retailerID
}
}
有关更多信息,请阅读文档 here