Могу ли я сбой/пропустить TestNG, если DataProvider не предоставляет тестовых случаев?

Если в моем TestNG DataProvider есть какая-то логика, но в результате получается пустой Object[][], я бы хотел, чтобы TestNG считал это неудачным тестом. Я бы предпочел не добавлять в DataProvider логику, которая проверяет, что Object[][].length > 0 так как в моем пакете много таких типов DataProvider. Возможно ли, чтобы TestNG пометил myTest как Failed или, по крайней мере, Skiped?

@DataProvider(name = "emptyDataProvider")
public Object[][] emptyDataProvider() {
    // Some misc logic...
    return new Object[][] { };
} 

@Test(groups = {"beta"}, dataProvider = "emptyDataProvider")
public void myTest(final String param1) {  

    // some assertions
}

person ngflanders    schedule 04.05.2020    source источник


Ответы (2)


Если я правильно помню, если ваш поставщик данных возвращает нулевой объект, т.е. с нулевыми тестовыми данными вы увидите ошибку, указывающую, что поставщик данных вернул нулевое значение во время выполнения.

Тест также будет помечен как Failed. Это поведение testNG по умолчанию.

Чтобы обработать это внутренне, вы должны ввести логику в самом методе поставщика данных, потому что после возврата пустого Object[][] выполнение немедленно завершится ошибкой.

person Kovid Mehta    schedule 13.05.2020

Ответ - да... мы можем проверить поставщика данных, но мы можем его использовать... @BeforeClass вы можете проверить значение поставщика данных и выдать новое исключение SkipException (поставщик данных имеет значение null или пуст!!!!!! !!!!); затем создайте собственный отчет, который вы можете настроить @AfterTest, вы можете использовать его, а с помощью Assert.fail() вы можете потерпеть неудачу вручную....

person Karthi Chandran    schedule 12.04.2021