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

Мягкие ассерты


(7hxr) #1

Всем привет, я совсем новичек. Стоит задача делать несколько проверок в одном тесте (WebDriver+NUnit), но чтобы тот не падал и ошибки записались.

Ассерты останавливают тест, а Verify нету.

Читал что это можно сделать с помощью мягких ассертов.

Может подскажете как такое реализовать?

 


(Mykhailo Poliarush) #2

реализуется такая штука очень просто

можете создать методы обертки для необходимых ассертов и вызывать их

только в самих методах не делать вызов ошибки, а ловить ошибку и записывать ее где-то в список

а потом в конце теста проверять на наличие ошибок в списке

и если список пустой, значит все проверки прошли нормально

а если есть какие-то ошибки, вы делаете исключение и выводите стек ошибок


Замена assert на мягкую проверку verify в TestNG
(Дмитрий Жарий) #3

 

Да, в .NET вы можете использовать лямбда выражения, которые сделают синтаксис теста приятней. 
А все остальное – как Миша говорил в предыдущем сообщении. 
 
1. Создайте метод, который принимает лямбда-выражение (делегат). В данном случае, это VerySoft
2. Внутри VerySoft будет выполнен код Ассерта. Но, любой ексепшн будет отловлен
3. Если ексепшн произошел, то VerySoft поставит некоторую глобальную статическую переменную SomeGlobalHasErrors в true и добавит исключение в список. 
4. Список исключений можно потом прочитать в TearDown методе после выполнения тестов. 
 
Вот код VerySoft:
 
public void VerySoft(Action testCode)
{
   try
   {
       testCode();
   }
   catch (Exception exception) 
   {
        SomeGlobalHasErrors = true;
        SomeGlobalListWithExceptions.Add(exception);
   }
}
А вот как это можно в тестах использовать:
 
VerySoft(  
                 () => Assert.IsTrue(false, "Verify that true is false") 
             );
 
Так же, обратите внимание на мой доклад : Обходные пути в автоматизированном тестировании

Он будет по теме.