Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

[Solved]TestNG. Как пропустить выполнение теста с разными датапровайдерами если хотя бы один из них провалиться?


(nigilit) #1

Здраствуйте,

Использую Selenium, TestNG и датапровайдери для проведения Data Driven Tests.

Тестирую форму значение которой менять нельзя но надо протестировать на обязательние поля и другие сообщения и ошыбки которые выдает форма.

Тестирование ведеться по одному полю - куда ввожу заведомо неправильные значения и проверяю выводяться ли правильно ошыбки.

Каждий дата провайдер - тестирует отдельное поле на конкретный набор ощыбок и проверяет пропустил ли валидатор форму или нет.

 

Нужно зделать так чтоб, если валидатор пропустил форму хотя бы 1 раз - остальные дата провайдеры были помечены как Skip.

Если с формой проблема и валидатор поломался тест не должен внести изменения во все поля этой формы.

 


(nigilit) #2

Разобрался.

Реализовал с помощю @AfterMethod и переменной ITestResult.

В каждом тесте делаю проверку  на то был ли предыдущий метод с таким же именем успешен.


(Mykhailo Poliarush) #3

если решили, приложите пожалуйста код, чтобы другие также увидели его,
спасибо больше


(nigilit) #4

Конечно,

Обявляю переменную testResults с результатами тестов в шапке класса:

 

public class be_settings_test extends BaseTest{
public Map <String, Boolean> testResults = new HashMap<String, Boolean>();
 

вот AfterMethod

@AfterMethod
   public void afterTest(ITestResult result){
   testResults.put(result.getName(), result.isSuccess());
}
 

Вот пример тестового метода тестового класса (методов много. В моем случае каждый метод тестирует отдельную форму в разделе Settings):

 

@Test(dataProvider = "Settings", priority=1, enabled=true, description = "")
public void TestIncorrectSettings(Map<String, Map<String, String>> fieldsData, Map<String, List<String>> expectedErrors) throws InterruptedException{
   if(!testResults.containsKey("TestIncorrectSettings")||testResults.get("TestIncorrectSettings")){
                     
                      /*Код Теста*/
 
   }
   else{
      throw new SkipException("Something wrong with form. Test was skiped to avoid damage.");
   }
}

 

Таким образом мы заполняем HashMap  testResults результатами выполнения тестових методов и в теле метода проверяем был ли Фейл по даному методу.
Если был - пропускаем выполнение.