Testng не учитывает тесты провайдера данных индивидуально

Вот мой провайдер данных

@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 записей, возвращенных поставщиком данных, и я хочу сообщить о 1295 тестах. Что мне не хватает?

2 ответа

Решение

Пожалуйста, используйте это, оно должно работать. Вам нужно вернуть массив объектов, где каждая строка - это строка данных, которую вы хотите использовать для теста. Тогда только это придет в отчете. Что вы делали, так это отправляли массив, чтобы он рассматривал его как один тест.

    @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 
    }
}

Для получения дополнительной информации, пожалуйста, просмотрите документацию здесь

Одни только DataProviders, итерируя для каждого набора данных, будут давать только совокупный результат теста вместо результата для каждой итерации.

Попробуйте использовать тестовую фабрику вместе с DataProvider для отдельного результата для каждой итерации теста.

http://testng.org/doc/documentation-main.html

Другие вопросы по тегам