NUnit 3 — повторная попытка не вызывается при сбое

#c# #selenium #testing #nunit

#c# #селен #тестирование #nunit #selenium

Вопрос:

У меня есть вопрос по поводу атрибута NUnit retry, который мы используем

 NUnit 3.12.0
NUnit3TestAdapter 3.17.0
C# and Selenium
  

Это типичный файл функций

 Test.feature
    Scenario Template: 01 Test footer options - Homeowner
      Given we set the destination to the homepage
      When  we select footer option "1"
      Then  we should see the url "tester" and title "test page"
  

Это и есть крючок

 Hooks.cs      
        [BeforeFeature(Order = 1)]
        [Test, Retry(2)]
        public static void BeforeFeatureTab(FeatureContext featureContext)
        {
            etc
        }
  

И вот мы имеем дело с тем, что неудача была захвачена

         public void AssertUrlContains(string comparing, IWebDriver driver)
        {
            var currentUrl = driver.Url;
            try
            {
                WriteToReport(Status.Pass, "Pass: URL is correct");
                Assert.That(currentUrl.Contains(comparing));
            }
            catch (Exception ex)
            {
                WriteToReport(Status.Fail, "Fail error: "   ex);
                Assert.That(false);
            }
        }
  

Теперь я подумал о том же самом.Это (false) вызвало бы повторную попытку, но это сейчас. Кто-нибудь может посмотреть, что я сделал неправильно или пропустил приятно.
Спасибо
Кев

Комментарии:

1. Вы пробовали использовать Assert.Fail вместо Assert.That ? Я думаю, Fail выдает конкретное исключение, которое может быть тем, к чему подключается логика повторной попытки. Никогда не использовал это раньше, хотя это просто идея 🙂

2. Недавно я перешел от сбоя к этому

Ответ №1:

Хотя вы не пометили его, я предполагаю, что вы используете SpecFlow. Хотя я не настолько хорошо разбираюсь в этом, я кое-чему научился, помогая людям, которые используют NUnit с этим. Тем не менее, вот что я думаю…

BeforeFeatureAttribute Преобразуется в NUnit OneTimeSetUpAttribute (ранее TestFixtureSetUpAttribute , вызываемый перед запуском любых тестов. OTOH, TestAttribute указывает, что метод является тестовым примером. IOW, вы говорите, что один и тот же метод должен быть вызван NUnit для инициализации прибора и в качестве теста. Вероятно, это приводит к возникновению исключения.

В NUnit неожиданные исключения рассматриваются не как сбои, а как ошибки. Ошибка, как правило, что-то не так с вашим тестом, а не с системой, которую вы тестируете, поэтому она обрабатывается по-разному. В частности, повторяются только сбои, а ошибки — нет.

Обратите также внимание, что NUnit ничего не знает о SpecFlow, поэтому, если это исключение specflow, это будет рассматриваться как ошибка, как и любое другое исключение.

Лучше всего прекратить использовать один и тот же метод как для теста, так и для инициализации прибора.

Комментарии:

1. Спасибо, Чарли, я займусь этим